summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorghendricks%novell.com <>2009-07-18 00:40:09 +0200
committerghendricks%novell.com <>2009-07-18 00:40:09 +0200
commite394756f42902de5eade4f6738127c25fa2bcef7 (patch)
treebbb29b8118eb619d791ea4605207befa1a076692
parentf304db03fdb9c7ad5c814700f048bb9061131cd3 (diff)
downloadbugzilla-e394756f42902de5eade4f6738127c25fa2bcef7.tar.gz
bugzilla-e394756f42902de5eade4f6738127c25fa2bcef7.tar.xz
Bug 456743 - Add the ability to disable field values (mark them as inactive)
patch by ghendricks@novell.com r=LpSolit, a=LpSolit
-rw-r--r--Bugzilla/Field.pm9
-rw-r--r--Bugzilla/Field/Choice.pm12
-rwxr-xr-xeditvalues.cgi3
-rwxr-xr-xquery.cgi16
-rw-r--r--template/en/default/admin/fieldvalues/edit.html.tmpl13
-rw-r--r--template/en/default/admin/fieldvalues/list.html.tmpl5
-rw-r--r--template/en/default/bug/field.html.tmpl2
-rw-r--r--template/en/default/search/form.html.tmpl14
8 files changed, 52 insertions, 22 deletions
diff --git a/Bugzilla/Field.pm b/Bugzilla/Field.pm
index 1cc89239e..a71afef35 100644
--- a/Bugzilla/Field.pm
+++ b/Bugzilla/Field.pm
@@ -15,6 +15,7 @@
# Contributor(s): Dan Mosedale <dmose@mozilla.org>
# Frédéric Buclin <LpSolit@gmail.com>
# Myk Melez <myk@mozilla.org>
+# Greg Hendricks <ghendricks@novell.com>
=head1 NAME
@@ -1033,8 +1034,14 @@ sub check_field {
my $dbh = Bugzilla->dbh;
# If $legalsRef is undefined, we use the default valid values.
+ # Valid values for this check are all possible values.
+ # Using get_legal_values would only return active values, but since
+ # some bugs may have inactive values set, we want to check them too.
unless (defined $legalsRef) {
- $legalsRef = get_legal_field_values($name);
+ $legalsRef = Bugzilla::Field->new({name => $name})->legal_values;
+ my @values = map($_->name, @$legalsRef);
+ $legalsRef = \@values;
+
}
if (!defined($value)
diff --git a/Bugzilla/Field/Choice.pm b/Bugzilla/Field/Choice.pm
index f23b0c46d..ce1020d6b 100644
--- a/Bugzilla/Field/Choice.pm
+++ b/Bugzilla/Field/Choice.pm
@@ -17,6 +17,7 @@
# The Original Code is the Bugzilla Bug Tracking System.
#
# Contributor(s): Max Kanat-Alexander <mkanat@bugzilla.org>
+# Greg Hendricks <ghendricks@novell.com>
use strict;
@@ -40,12 +41,14 @@ use constant DB_COLUMNS => qw(
id
value
sortkey
+ isactive
visibility_value_id
);
use constant UPDATE_COLUMNS => qw(
value
sortkey
+ isactive
visibility_value_id
);
@@ -58,6 +61,7 @@ use constant VALIDATORS => {
value => \&_check_value,
sortkey => \&_check_sortkey,
visibility_value_id => \&_check_visibility_value_id,
+ isactive => \&Bugzilla::Object::check_boolean,
};
use constant CLASS_MAP => {
@@ -211,7 +215,8 @@ sub _check_if_controller {
# Accessors #
#############
-sub sortkey { return $_[0]->{'sortkey'}; }
+sub is_active { return $_[0]->{'isactive'}; }
+sub sortkey { return $_[0]->{'sortkey'}; }
sub bug_count {
my $self = shift;
@@ -301,8 +306,9 @@ sub controlled_values {
# Mutators #
############
-sub set_name { $_[0]->set('value', $_[1]); }
-sub set_sortkey { $_[0]->set('sortkey', $_[1]); }
+sub set_is_active { $_[0]->set('isactive', $_[1]); }
+sub set_name { $_[0]->set('value', $_[1]); }
+sub set_sortkey { $_[0]->set('sortkey', $_[1]); }
sub set_visibility_value {
my ($self, $value) = @_;
$self->set('visibility_value_id', $value);
diff --git a/editvalues.cgi b/editvalues.cgi
index 3c553c8d1..477bf8696 100755
--- a/editvalues.cgi
+++ b/editvalues.cgi
@@ -188,6 +188,9 @@ if ($action eq 'update') {
$value->set_name($cgi->param('value_new'));
$value->set_sortkey($cgi->param('sortkey'));
$value->set_visibility_value($cgi->param('visibility_value_id'));
+ if (!($value->is_static || $value->is_default)) {
+ $value->set_is_active($cgi->param('is_active'));
+ }
$vars->{'changes'} = $value->update();
delete_token($token);
$vars->{'message'} = 'field_value_updated';
diff --git a/query.cgi b/query.cgi
index eed492114..577410681 100755
--- a/query.cgi
+++ b/query.cgi
@@ -232,11 +232,6 @@ if (Bugzilla->params->{'usetargetmilestone'}) {
$vars->{'have_keywords'} = Bugzilla::Keyword::keyword_count();
-my $legal_resolutions = get_legal_field_values('resolution');
-push(@$legal_resolutions, "---"); # Oy, what a hack.
-# Another hack - this array contains "" for some reason. See bug 106589.
-$vars->{'resolution'} = [grep ($_, @$legal_resolutions)];
-
my @chfields;
push @chfields, "[Bug creation]";
@@ -262,11 +257,12 @@ if (Bugzilla->user->in_group(Bugzilla->params->{'timetrackinggroup'})) {
}
@chfields = (sort(@chfields));
$vars->{'chfield'} = \@chfields;
-$vars->{'bug_status'} = get_legal_field_values('bug_status');
-$vars->{'rep_platform'} = get_legal_field_values('rep_platform');
-$vars->{'op_sys'} = get_legal_field_values('op_sys');
-$vars->{'priority'} = get_legal_field_values('priority');
-$vars->{'bug_severity'} = get_legal_field_values('bug_severity');
+$vars->{'bug_status'} = Bugzilla::Field->new({name => 'bug_status'})->legal_values;
+$vars->{'rep_platform'} = Bugzilla::Field->new({name => 'rep_platform'})->legal_values;
+$vars->{'op_sys'} = Bugzilla::Field->new({name => 'op_sys'})->legal_values;
+$vars->{'priority'} = Bugzilla::Field->new({name => 'priority'})->legal_values;
+$vars->{'bug_severity'} = Bugzilla::Field->new({name => 'bug_severity'})->legal_values;
+$vars->{'resolution'} = Bugzilla::Field->new({name => 'resolution'})->legal_values;
# Boolean charts
my @fields = Bugzilla->get_fields({ obsolete => 0 });
diff --git a/template/en/default/admin/fieldvalues/edit.html.tmpl b/template/en/default/admin/fieldvalues/edit.html.tmpl
index b01415577..5650ee87b 100644
--- a/template/en/default/admin/fieldvalues/edit.html.tmpl
+++ b/template/en/default/admin/fieldvalues/edit.html.tmpl
@@ -81,8 +81,19 @@
</td>
</tr>
[% END %]
+ <tr>
+ <th align="right"><label for="is_active">Enabled for [% terms.bugs %]:</label></th>
+ <td><input id="is_active" name="is_active" type="checkbox" value="1"
+ [%+ 'checked="checked"' IF value.is_active %]
+ [%+ 'disabled="disabled"' IF value.is_default OR value.is_static %]>
+ [% IF value.is_default %]
+ This value is selected as default in the parameters for this field. It cannot be disabled.
+ [% ELSIF value.is_static %]
+ This value is non-deletable and cannot be disabled.
+ [% END %]
+ </td>
+ </tr>
</table>
-
<input type="hidden" name="value" value="[% value.name FILTER html %]">
<input type="hidden" name="action" value="update">
<input type="hidden" name="field" value="[% field.name FILTER html %]">
diff --git a/template/en/default/admin/fieldvalues/list.html.tmpl b/template/en/default/admin/fieldvalues/list.html.tmpl
index fdc22d912..3f750ebca 100644
--- a/template/en/default/admin/fieldvalues/list.html.tmpl
+++ b/template/en/default/admin/fieldvalues/list.html.tmpl
@@ -51,6 +51,11 @@
heading => "Sortkey"
},
{
+ name => "isactive"
+ heading => "Enabled for $terms.bugs"
+ yesno_field => 1
+ },
+ {
name => "action"
heading => "Action"
content => "Delete"
diff --git a/template/en/default/bug/field.html.tmpl b/template/en/default/bug/field.html.tmpl
index 21a73a805..039910f1d 100644
--- a/template/en/default/bug/field.html.tmpl
+++ b/template/en/default/bug/field.html.tmpl
@@ -142,7 +142,7 @@
selected="selected"
[% ELSIF (control_field && control_value
&& !bug.${control_field.name}.contains(control_value.name))
- || (field.name == "product" && !legal_value.is_active)
+ || !legal_value.is_active
%]
class="bz_hidden_option" disabled="disabled"
[% END %]>
diff --git a/template/en/default/search/form.html.tmpl b/template/en/default/search/form.html.tmpl
index 46df426c1..078ff8c6b 100644
--- a/template/en/default/search/form.html.tmpl
+++ b/template/en/default/search/form.html.tmpl
@@ -611,15 +611,17 @@ function doOnSelectProduct(selectmode) {
<td align="left">
<select name="[% sel.name %]" id="[% sel.name %]"
multiple="multiple" size="[% sel.size %]">
- [% FOREACH name = ${sel.name} %]
- <option value="[% name FILTER html %]"
- [% " selected" IF lsearch(default.${sel.name}, name) != -1 %]>
+ [% FOREACH value = ${sel.name} %]
+ [%# This only applies for Resolution really %]
+ <option value="[% value.name OR '---' FILTER html %]"
+ [% " selected" IF lsearch(default.${sel.name}, value.name) != -1 %]>
[% IF sel.name == "bug_status" %]
- [% get_status(name) FILTER html %]
+ [% get_status(value.name) FILTER html %]
[% ELSIF sel.name == "resolution" %]
- [% get_resolution(name) FILTER html %]
+ [%# Again, resolution has that odd empty value. Replace it with '---' %]
+ [% get_resolution(value.name) OR '---' FILTER html %]
[% ELSE %]
- [% name FILTER html %]
+ [% value.name FILTER html %]
[% END %]
</option>
[% END %]