Bug 98364 - Add Last comment column

git-svn-id: svn://svn.office.custis.ru/3rdparty/bugzilla.org/trunk@1569 6955db30-a419-402b-8a0d-67ecbb4d7f56
master
vfilippov 2012-06-15 10:34:00 +00:00
parent 41ad159d3b
commit f50d375890
4 changed files with 35 additions and 17 deletions

View File

@ -1253,6 +1253,8 @@ $vars->{abbrev} = {
op_sys => { maxlength => 4 },
target_milestone => { title => "Milestone" },
percentage_complete => { format_value => "%d %%" },
comment0 => { maxlength => 40, ellipsis => "..." },
lastcomment => { maxlength => 40, ellipsis => "..." },
};
################################################################################

View File

@ -1,5 +1,5 @@
#!/usr/bin/perl
# Хуки в список багов
# Custom buglist columns
package CustisBuglistHooks;
@ -7,6 +7,7 @@ use strict;
use Bugzilla::Search;
use Bugzilla::Util;
# "Static" column definitions - freely cached by Bugzilla forever
sub buglist_static_columns
{
my ($args) = @_;
@ -18,12 +19,20 @@ sub buglist_static_columns
title => "First Comment",
noreports => 1,
};
# CustIS Bug 98364 - last comment to the bug
$columns->{lastcomment} = {
title => "Last Comment",
noreports => 1,
};
# Last commenter and last comment time
$columns->{lastcommenter} = {
title => "Last Commenter",
};
$columns->{last_comment_time} = {
title => "Last Comment Time",
};
$columns->{creation_ts_date} = {
nocharts => 1,
title => "Creation Date",
@ -37,8 +46,7 @@ sub buglist_static_columns
};
### end Testopia ###
# Нужно для SuperWorkTime, однако эта необходимость следует
# из неидеальности buglist.cgi - он не выводит баги объектами
# Needed for SuperWorkTime, would not be needed if buglist.cgi loaded bugs as objects
$columns->{product_notimetracking} = {
name => 'map_products.notimetracking',
joins => $columns->{product}->{joins},
@ -51,15 +59,13 @@ sub buglist_static_columns
return 1;
}
# "Dynamic" column definitions - rebuilt over static during each request
sub buglist_columns
{
my ($args) = @_;
my $columns = $args->{columns};
# CustIS Bug 71955 - first comment to the bug
# FIXME можно сделать JOIN'ом по bug_when=creation_ts
# но тогда дополнительно надо COALESCE на подзапрос с isprivate
# в случае isprivate.
my $hint = '';
my $dbh = Bugzilla->dbh;
if ($dbh->isa('Bugzilla::DB::Mysql'))
@ -67,9 +73,18 @@ sub buglist_columns
$hint = ' FORCE INDEX (longdescs_bug_id_idx)';
}
my $priv = (Bugzilla->user->is_insider ? "" : "AND ldc0.isprivate=0 ");
# Not using JOIN (it could be joined on bug_when=creation_ts),
# because it would require COALESCE to an 'isprivate' subquery
# for private comments.
$columns->{comment0}->{name} =
"(SELECT thetext FROM longdescs ldc0$hint WHERE ldc0.bug_id = bugs.bug_id $priv".
" ORDER BY ldc0.bug_when LIMIT 1)";
# CustIS Bug 98364 - last comment to the bug
$columns->{lastcomment}->{name} =
"(SELECT thetext FROM longdescs ldc0$hint WHERE ldc0.bug_id = bugs.bug_id $priv".
" ORDER BY ldc0.bug_when DESC LIMIT 1)";
# Last commenter and last comment time
my $login = 'ldp0.login_name';
if (!Bugzilla->user->id)
{

View File

@ -15,7 +15,7 @@ use Bugzilla::Util;
use Bugzilla::Constants;
use Bugzilla::Error;
# Раскрытие групповых пользователей в запросе флага
# Expand "group" users in flag requestee
sub flag_check_requestee_list
{
my ($args) = @_;
@ -32,7 +32,7 @@ sub flag_check_requestee_list
return 1;
}
# Напоминания о несброшенных запросах флагов
# Remind about flag requests during bug changes
sub process_bug_after_move
{
my ($args) = @_;
@ -118,8 +118,7 @@ sub process_bug_after_move
return 1;
}
# Bug 69514 - автоматическое проставление cf_extbug
# при клонировании во внутренний/внешний продукт
# Bug 69514 - Automatic setting of cf_extbug during clone to internal/external product
sub enter_bug_cloned_bug
{
my ($args) = @_;
@ -136,7 +135,7 @@ sub enter_bug_cloned_bug
}
# Bug 53590 - add a comment to cloned bug
# Bug 69514 - автоматическое проставление cf_extbug
# Bug 69514 - automatic setting of cf_extbug during clone to external product
sub bug_end_of_create
{
my ($args) = @_;
@ -169,7 +168,7 @@ sub bug_end_of_create
return 1;
}
# Интеграция с MediaWiki-системами
# MediaWiki link integration
sub quote_urls_custom_proto
{
my ($args) = @_;
@ -182,10 +181,10 @@ sub quote_urls_custom_proto
}
##
## НЕ-хуки:
## NON-HOOK FUNCTIONS
##
# Кодирование anchor'а подзаголовка wiki-статьи
# MediaWiki page anchor encoding
sub process_wiki_anchor
{
my ($anchor) = (@_);
@ -197,13 +196,13 @@ sub process_wiki_anchor
return $anchor;
}
# Преобразование названий MediaWiki-статей в URL
# Convert MediaWiki page titles to URLs
sub process_wiki_url
{
my ($base, $url, $anchor) = @_;
$url = trim($url);
$url =~ s/\s+/_/gso;
# обычный url_quote нам не подходит, т.к. / не нужно переделывать в %2F
# Use url_quote without converting / to %2F
$url = url_quote_noslash($url);
return $base . $url . '#' . process_wiki_anchor($anchor);
}

View File

@ -83,11 +83,13 @@ td.bz_total {
.bz_buglist .bz_status_whiteboard_column,
.bz_buglist .bz_keywords_column,
.bz_buglist .bz_flagtypes_name_column,
.bz_buglist .bz_comment0_column,
.bz_buglist .bz_f1,
.bz_buglist .bz_f4,
.bz_buglist .bz_f7 { white-space: normal; }
.bz_buglist .bz_comment0_column,
.bz_buglist .bz_lastcomment_column { width: 15%; white-space: normal; }
.bz_buglist .bz_blocked_column,
.bz_buglist .bz_dependson_column { width: 8%; white-space: normal; }