]> git.ipfire.org Git - thirdparty/bugzilla.git/commitdiff
Bug 437006: Add hooks to Bugzilla\Bug.pm to display additional columns
authormkanat%bugzilla.org <>
Fri, 22 Aug 2008 03:56:46 +0000 (03:56 +0000)
committermkanat%bugzilla.org <>
Fri, 22 Aug 2008 03:56:46 +0000 (03:56 +0000)
Patch By Elliotte Martin <elliotte_martin@yahoo.com> r=mkanat, a=mkanat

Bugzilla/Bug.pm
Bugzilla/Hook.pm
extensions/example/code/bug-columns.pl [new file with mode: 0644]
extensions/example/code/bug-fields.pl [new file with mode: 0644]

index 444858bd1a4970481ccb12119c21c2088d7d5561..57ba68ac25b8b1a9d03bb153c94fb59759b703aa 100644 (file)
@@ -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;
 }
 
 #####################################################################
index b51f730bfeed864eb1c76fc3397ba9bb1e780e89..4d4a52495e50a319dfdcecc852b75d4bb7ca5405 100644 (file)
@@ -207,6 +207,21 @@ This works just like L</auth-login_methods> except it's for
 login verification methods (See L<Bugzilla::Auth::Verify>.) It also
 takes a C<modules> parameter, just like L</auth-login_methods>.
 
+=head2 bug-columns
+
+This allows you to add new fields that will show up in every L<Bugzilla::Bug>
+object. Note that you will also need to use the L</bug-fields> hook in
+conjunction with this hook to make this work.
+
+Params:
+
+=over
+
+=item C<columns> - 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<Bugzilla::Bug/update>, after all other changes are
@@ -226,6 +241,23 @@ C<$changes-E<gt>{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<Bugzilla::Bug> 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</bug-columns>.
+
+Params:
+
+=over
+
+=item C<columns> - 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 (file)
index 0000000..92ccf6d
--- /dev/null
@@ -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 <elliotte_martin@yahoo.com>
+
+
+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 (file)
index 0000000..f847542
--- /dev/null
@@ -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 <elliotte_martin@yahoo.com>
+
+
+use strict;
+use warnings;
+use Bugzilla;
+
+my $fields = Bugzilla->hook_args->{'fields'};
+push (@$fields, "example")