From a9822ceefb563a54420f13b2395b8c1359833778 Mon Sep 17 00:00:00 2001 From: "mkanat%bugzilla.org" <> Date: Sat, 25 Oct 2008 04:14:56 +0000 Subject: Bug 458436: Allow standard global select fields to control visibility of custom fields Patch By Max Kanat-Alexander r=bbaetz, a=mkanat --- Bugzilla/Field.pm | 41 +++++++++++++++++++++++++++++++++-------- 1 file changed, 33 insertions(+), 8 deletions(-) (limited to 'Bugzilla') diff --git a/Bugzilla/Field.pm b/Bugzilla/Field.pm index 7da8a8bba..a5e380a11 100644 --- a/Bugzilla/Field.pm +++ b/Bugzilla/Field.pm @@ -125,6 +125,8 @@ use constant UPDATE_COLUMNS => qw( enter_bug visibility_field_id visibility_value_id + + type ); # How various field types translate into SQL data definitions. @@ -148,16 +150,22 @@ use constant DEFAULT_FIELDS => ( {name => 'classification', desc => 'Classification', in_new_bugmail => 1}, {name => 'product', desc => 'Product', in_new_bugmail => 1}, {name => 'version', desc => 'Version', in_new_bugmail => 1}, - {name => 'rep_platform', desc => 'Platform', in_new_bugmail => 1}, + {name => 'rep_platform', desc => 'Platform', in_new_bugmail => 1, + type => FIELD_TYPE_SINGLE_SELECT}, {name => 'bug_file_loc', desc => 'URL', in_new_bugmail => 1}, - {name => 'op_sys', desc => 'OS/Version', in_new_bugmail => 1}, - {name => 'bug_status', desc => 'Status', in_new_bugmail => 1}, + {name => 'op_sys', desc => 'OS/Version', in_new_bugmail => 1, + type => FIELD_TYPE_SINGLE_SELECT}, + {name => 'bug_status', desc => 'Status', in_new_bugmail => 1, + type => FIELD_TYPE_SINGLE_SELECT}, {name => 'status_whiteboard', desc => 'Status Whiteboard', in_new_bugmail => 1}, {name => 'keywords', desc => 'Keywords', in_new_bugmail => 1}, - {name => 'resolution', desc => 'Resolution'}, - {name => 'bug_severity', desc => 'Severity', in_new_bugmail => 1}, - {name => 'priority', desc => 'Priority', in_new_bugmail => 1}, + {name => 'resolution', desc => 'Resolution', + type => FIELD_TYPE_SINGLE_SELECT}, + {name => 'bug_severity', desc => 'Severity', in_new_bugmail => 1, + type => FIELD_TYPE_SINGLE_SELECT}, + {name => 'priority', desc => 'Priority', in_new_bugmail => 1, + type => FIELD_TYPE_SINGLE_SELECT}, {name => 'component', desc => 'Component', in_new_bugmail => 1}, {name => 'assigned_to', desc => 'AssignedTo', in_new_bugmail => 1}, {name => 'reporter', desc => 'ReportedBy', in_new_bugmail => 1}, @@ -200,6 +208,20 @@ use constant DEFAULT_FIELDS => ( {name => "owner_idle_time", desc => "Time Since Assignee Touched"}, ); +################ +# Constructors # +################ + +# Override match to add is_select. +sub match { + my $self = shift; + my ($params) = @_; + if (delete $params->{is_select}) { + $params->{type} = [FIELD_TYPE_SINGLE_SELECT, FIELD_TYPE_MULTI_SELECT]; + } + return $self->SUPER::match(@_); +} + ############## # Validators # ############## @@ -551,6 +573,9 @@ sub set_visibility_value { delete $self->{visibility_value}; } +# This is only used internally by upgrade code in Bugzilla::Field. +sub _set_type { $_[0]->set('type', $_[1]); } + =pod =head2 Instance Method @@ -766,6 +791,7 @@ sub populate_field_definitions { if ($field) { $field->set_description($def->{desc}); $field->set_in_new_bugmail($def->{in_new_bugmail}); + $field->_set_type($def->{type}) if $def->{type}; $field->update(); } else { @@ -773,8 +799,7 @@ sub populate_field_definitions { $def->{mailhead} = $def->{in_new_bugmail}; delete $def->{in_new_bugmail}; } - $def->{description} = $def->{desc}; - delete $def->{desc}; + $def->{description} = delete $def->{desc}; Bugzilla::Field->create($def); } } -- cgit v1.2.3-24-g4f1b