From 54bbf193e80b46859d9aacf62a5f05081f3f143b Mon Sep 17 00:00:00 2001 From: "mkanat%bugzilla.org" <> Date: Fri, 22 Aug 2008 03:56:46 +0000 Subject: Bug 437006: Add hooks to Bugzilla\Bug.pm to display additional columns Patch By Elliotte Martin r=mkanat, a=mkanat --- Bugzilla/Bug.pm | 14 ++++++++++++-- Bugzilla/Hook.pm | 32 ++++++++++++++++++++++++++++++++ extensions/example/code/bug-columns.pl | 27 +++++++++++++++++++++++++++ extensions/example/code/bug-fields.pl | 27 +++++++++++++++++++++++++++ 4 files changed, 98 insertions(+), 2 deletions(-) create mode 100644 extensions/example/code/bug-columns.pl create mode 100644 extensions/example/code/bug-fields.pl diff --git a/Bugzilla/Bug.pm b/Bugzilla/Bug.pm index 444858bd1..57ba68ac2 100644 --- a/Bugzilla/Bug.pm +++ b/Bugzilla/Bug.pm @@ -72,7 +72,9 @@ sub DB_COLUMNS { my @custom = grep {$_->type != FIELD_TYPE_MULTI_SELECT} Bugzilla->active_custom_fields; my @custom_names = map {$_->name} @custom; - return qw( + + my @columns = + qw( alias assigned_to bug_file_loc @@ -101,6 +103,10 @@ sub DB_COLUMNS { $dbh->sql_date_format('creation_ts', '%Y.%m.%d %H:%i') . ' AS creation_ts', $dbh->sql_date_format('deadline', '%Y-%m-%d') . ' AS deadline', @custom_names; + + Bugzilla::Hook::process("bug-columns", {'columns' => \@columns} ); + + return @columns; } use constant REQUIRED_CREATE_FIELDS => qw( @@ -1645,7 +1651,8 @@ sub _check_select_field { sub fields { my $class = shift; - return ( + my @fields = + ( # Standard Fields # Keep this ordering in sync with bugzilla.dtd. qw(bug_id alias creation_ts short_desc delta_ts @@ -1664,6 +1671,9 @@ sub fields { # Custom Fields map { $_->name } Bugzilla->active_custom_fields ); + Bugzilla::Hook::process("bug-fields", {'fields' => \@fields} ); + + return @fields; } ##################################################################### diff --git a/Bugzilla/Hook.pm b/Bugzilla/Hook.pm index b51f730bf..4d4a52495 100644 --- a/Bugzilla/Hook.pm +++ b/Bugzilla/Hook.pm @@ -207,6 +207,21 @@ This works just like L except it's for login verification methods (See L.) It also takes a C parameter, just like L. +=head2 bug-columns + +This allows you to add new fields that will show up in every L +object. Note that you will also need to use the L hook in +conjunction with this hook to make this work. + +Params: + +=over + +=item C - An arrayref containing an array of column names. Push +your column name(s) onto the array. + +=back + =head2 bug-end_of_update This happens at the end of L, after all other changes are @@ -226,6 +241,23 @@ C<$changes-E{field} = [old, new]> =back +=head2 bug-fields + +Allows the addition of database fields from the bugs table to the standard +list of allowable fields in a L object, so that +you can call the field as a method. + +Note: You should add here the names of any fields you added in L. + +Params: + +=over + +=item C - A arrayref containing an array of column names. Push +your column name(s) onto the array. + +=back + =head2 buglist-columns This happens in buglist.cgi after the standard columns have been defined and diff --git a/extensions/example/code/bug-columns.pl b/extensions/example/code/bug-columns.pl new file mode 100644 index 000000000..92ccf6d23 --- /dev/null +++ b/extensions/example/code/bug-columns.pl @@ -0,0 +1,27 @@ +# -*- Mode: perl; indent-tabs-mode: nil -*- +# +# The contents of this file are subject to the Mozilla Public +# License Version 1.1 (the "License"); you may not use this file +# except in compliance with the License. You may obtain a copy of +# the License at http://www.mozilla.org/MPL/ +# +# Software distributed under the License is distributed on an "AS +# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or +# implied. See the License for the specific language governing +# rights and limitations under the License. +# +# The Original Code is the Bugzilla Example Plugin. +# +# The Initial Developer of the Original Code is Canonical Ltd. +# Portions created by Canonical Ltd. are Copyright (C) 2008 +# Canonical Ltd. All Rights Reserved. +# +# Contributor(s): Elliotte Martin + + +use strict; +use warnings; +use Bugzilla; + +my $columns = Bugzilla->hook_args->{'columns'}; +push (@$columns, "delta_ts AS example") diff --git a/extensions/example/code/bug-fields.pl b/extensions/example/code/bug-fields.pl new file mode 100644 index 000000000..f8475426d --- /dev/null +++ b/extensions/example/code/bug-fields.pl @@ -0,0 +1,27 @@ +# -*- Mode: perl; indent-tabs-mode: nil -*- +# +# The contents of this file are subject to the Mozilla Public +# License Version 1.1 (the "License"); you may not use this file +# except in compliance with the License. You may obtain a copy of +# the License at http://www.mozilla.org/MPL/ +# +# Software distributed under the License is distributed on an "AS +# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or +# implied. See the License for the specific language governing +# rights and limitations under the License. +# +# The Original Code is the Bugzilla Example Plugin. +# +# The Initial Developer of the Original Code is Canonical Ltd. +# Portions created by Canonical Ltd. are Copyright (C) 2008 +# Canonical Ltd. All Rights Reserved. +# +# Contributor(s): Elliotte Martin + + +use strict; +use warnings; +use Bugzilla; + +my $fields = Bugzilla->hook_args->{'fields'}; +push (@$fields, "example") -- cgit v1.2.3-24-g4f1b