diff options
author | Frédéric Buclin <LpSolit@gmail.com> | 2011-08-01 10:32:12 +0200 |
---|---|---|
committer | Frédéric Buclin <LpSolit@gmail.com> | 2011-08-01 10:32:12 +0200 |
commit | bc82259f9284e3d682536086637ace46cd8ab6ea (patch) | |
tree | 36b90f2d3b7423a1826bafac596be031a000b887 | |
parent | 2a32a01cd5973a2cd0c03e79405ae75ecb3f48d4 (diff) | |
download | bugzilla-bc82259f9284e3d682536086637ace46cd8ab6ea.tar.gz bugzilla-bc82259f9284e3d682536086637ace46cd8ab6ea.tar.xz |
Bug 674574: When all components or versions are disabled, you cannot enter bugs into the product but it's listed in enter_bug.cgi anyway
r=dkl a=LpSolit
-rw-r--r-- | Bugzilla/User.pm | 23 | ||||
-rw-r--r-- | template/en/default/global/user-error.html.tmpl | 4 |
2 files changed, 16 insertions, 11 deletions
diff --git a/Bugzilla/User.pm b/Bugzilla/User.pm index 188432241..3a3edcb5b 100644 --- a/Bugzilla/User.pm +++ b/Bugzilla/User.pm @@ -1004,11 +1004,15 @@ sub can_enter_product { ThrowUserError('product_disabled', { product => $product }); } # It could have no components... - elsif (!@{$product->components}) { + elsif (!@{$product->components} + || !grep { $_->is_active } @{$product->components}) + { ThrowUserError('missing_component', { product => $product }); } # It could have no versions... - elsif (!@{$product->versions}) { + elsif (!@{$product->versions} + || !grep { $_->is_active } @{$product->versions}) + { ThrowUserError ('missing_version', { product => $product }); } @@ -1024,28 +1028,29 @@ sub get_enterable_products { } # All products which the user has "Entry" access to. - my @enterable_ids =@{$dbh->selectcol_arrayref( + my $enterable_ids = $dbh->selectcol_arrayref( 'SELECT products.id FROM products LEFT JOIN group_control_map ON group_control_map.product_id = products.id AND group_control_map.entry != 0 AND group_id NOT IN (' . $self->groups_as_string . ') WHERE group_id IS NULL - AND products.isactive = 1') || []}; + AND products.isactive = 1'); - if (@enterable_ids) { + if (scalar @$enterable_ids) { # And all of these products must have at least one component # and one version. - @enterable_ids = @{$dbh->selectcol_arrayref( + $enterable_ids = $dbh->selectcol_arrayref( 'SELECT DISTINCT products.id FROM products INNER JOIN components ON components.product_id = products.id INNER JOIN versions ON versions.product_id = products.id - WHERE products.id IN (' . (join(',', @enterable_ids)) . - ')') || []}; + WHERE products.id IN (' . join(',', @$enterable_ids) . ') + AND components.isactive = 1 + AND versions.isactive = 1'); } $self->{enterable_products} = - Bugzilla::Product->new_from_list(\@enterable_ids); + Bugzilla::Product->new_from_list($enterable_ids); return $self->{enterable_products}; } diff --git a/template/en/default/global/user-error.html.tmpl b/template/en/default/global/user-error.html.tmpl index 3e831c0c4..52ac64ddd 100644 --- a/template/en/default/global/user-error.html.tmpl +++ b/template/en/default/global/user-error.html.tmpl @@ -1128,7 +1128,7 @@ [% admindocslinks = {'products.html' => 'Administering products', 'components.html' => 'Creating a component'} %] Sorry, the product <em>[% product.name FILTER html %]</em> - has to have at least one component in order for you to + has to have at least one active component in order for you to enter [% terms.abug %] into it.<br> [% IF user.in_group("editcomponents", product.id) %] <a href="editcomponents.cgi?action=add&product=[% product.name FILTER uri %]">Create @@ -1195,7 +1195,7 @@ [% title = "Missing Version" %] [% admindocslinks = {'versions.html' => 'Defining versions'} %] Sorry, the product <em>[% product.name FILTER html %]</em> - has to have at least one version in order for you to + has to have at least one active version in order for you to enter [% terms.abug %] into it.<br> [% IF user.in_group("editcomponents", product.id) %] <a href="editversions.cgi?action=add&product=[% product.name FILTER uri %]">Create |