From f65a3e7e20fdfe2f136ecdaa228f0784bb56b9ad Mon Sep 17 00:00:00 2001 From: "mkanat%bugzilla.org" <> Date: Sun, 8 Feb 2009 19:42:19 +0000 Subject: Bug 371995: Allow the Product field to restrict visibility of custom fields Patch By Max Kanat-Alexander r=LpSolit, a=mkanat --- Bugzilla/Product.pm | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) (limited to 'Bugzilla/Product.pm') diff --git a/Bugzilla/Product.pm b/Bugzilla/Product.pm index 396aaa346..88292d27e 100644 --- a/Bugzilla/Product.pm +++ b/Bugzilla/Product.pm @@ -31,7 +31,9 @@ use Bugzilla::Install::Requirements; use Bugzilla::Mailer; use Bugzilla::Series; -use base qw(Bugzilla::Object); +# Currently, we only implement enough of the Bugzilla::Field::Choice +# interface to control the visibility of other fields. +use base qw(Bugzilla::Field::Choice); use constant DEFAULT_CLASSIFICATION_ID => 1; @@ -40,6 +42,10 @@ use constant DEFAULT_CLASSIFICATION_ID => 1; ############################### use constant DB_TABLE => 'products'; +# Reset these back to the Bugzilla::Object defaults, instead of the +# Bugzilla::Field::Choice defaults. +use constant NAME_FIELD => 'name'; +use constant LIST_ORDER => 'name'; use constant DB_COLUMNS => qw( id @@ -372,6 +378,8 @@ sub remove_from_db { $dbh->bz_start_transaction(); + $self->_check_if_controller(); + if ($self->bug_count) { if (Bugzilla->params->{'allowbugdeletion'}) { require Bugzilla::Bug; @@ -523,6 +531,20 @@ sub _check_votes { return $votes; } +##################################### +# Implement Bugzilla::Field::Choice # +##################################### + +sub field { + my $invocant = shift; + my $class = ref $invocant || $invocant; + my $cache = Bugzilla->request_cache; + $cache->{"field_$class"} ||= new Bugzilla::Field({ name => 'product' }); + return $cache->{"field_$class"}; +} + +use constant is_default => 0; + ############################### #### Methods #### ############################### -- cgit v1.2.3-24-g4f1b