Bug 184081 Change search interfaces to use Viewable products instead of enterable products

r=bbaetz
a=justdave


git-svn-id: svn://10.0.0.236/trunk@135029 18797224-902f-48f8-a5cc-f745e15eee43
This commit is contained in:
bugreport%peshkin.net
2002-12-10 14:17:05 +00:00
parent 71083be349
commit 3654c27c31
5 changed files with 28 additions and 17 deletions

View File

@@ -261,8 +261,11 @@ sub check_netmask {
{
name => 'useentrygroupdefault',
desc => 'If this is on, Bugzilla will use product bug groups to restrict ' .
'who can enter bugs. Requires makeproductgroups to be on as well.',
desc => 'If this is on, Bugzilla will use product bug groups by default ' .
'to restrict who can enter bugs. If this is on, users can see ' .
'any product to which they have entry access in search menus. ' .
'If this is off, users can see any product to which they have not ' .
'been excluded by a mandatory restriction.',
type => 'b',
default => 0
},

View File

@@ -774,12 +774,17 @@ sub CanEnterProduct {
#
# This function returns an alphabetical list of product names to which
# the user can enter bugs.
sub GetEnterableProducts {
sub GetSelectableProducts {
my $query = "SELECT name " .
"FROM products " .
"LEFT JOIN group_control_map " .
"ON group_control_map.product_id = products.id " .
"AND group_control_map.entry != 0 ";
"ON group_control_map.product_id = products.id ";
if (Param('useentrygroupdefault')) {
$query .= "AND group_control_map.entry != 0 ";
} else {
$query .= "AND group_control_map.membercontrol = " .
CONTROLMAPMANDATORY . " ";
}
if ((defined @{$::vars->{user}{groupids}})
&& (@{$::vars->{user}{groupids}} > 0)) {
$query .= "AND group_id NOT IN(" .
@@ -796,19 +801,24 @@ sub GetEnterableProducts {
return (@products);
}
# GetEnterableProductHash
# GetSelectableProductHash
# returns a hash containing
# legal_products => an enterable product list
# legal_components => the list of components of enterable products
# components => a hash of component lists for each enterable product
sub GetEnterableProductHash {
sub GetSelectableProductHash {
my $query = "SELECT products.name, components.name " .
"FROM products " .
"LEFT JOIN components " .
"ON components.product_id = products.id " .
"LEFT JOIN group_control_map " .
"ON group_control_map.product_id = products.id " .
"AND group_control_map.entry != 0 ";
"ON group_control_map.product_id = products.id ";
if (Param('useentrygroupdefault')) {
$query .= "AND group_control_map.entry != 0 ";
} else {
$query .= "AND group_control_map.membercontrol = " .
CONTROLMAPMANDATORY . " ";
}
if ((defined @{$::vars->{user}{groupids}})
&& (@{$::vars->{user}{groupids}} > 0)) {
$query .= "AND group_id NOT IN(" .

View File

@@ -198,7 +198,7 @@ my @products = ();
my %component_set;
my %version_set;
my %milestone_set;
foreach my $p (GetEnterableProducts()) {
foreach my $p (GetSelectableProducts()) {
# We build up boolean hashes in the "-set" hashes for each of these things
# before making a list because there may be duplicates names across products.
push @products, $p;

View File

@@ -61,9 +61,7 @@ GetVersionTable();
# We only want those products that the user has permissions for.
my @myproducts;
push( @myproducts, "-All-");
foreach my $this_product (@legal_product) {
push(@myproducts, $this_product) if CanEnterProduct($this_product);
}
push( @myproducts, GetSelectableProducts());
if (! defined $FORM{'product'}) {

View File

@@ -254,10 +254,10 @@ sub queue {
# menu when the products menu changes; used by the template to populate
# the menus and keep the components menu consistent with the products menu
GetVersionTable();
my $enterable = GetEnterableProductHash();
$vars->{'products'} = $enterable->{legal_products};
$vars->{'components'} = $enterable->{legal_components};
$vars->{'components_by_product'} = $enterable->{components};
my $selectable = GetSelectableProductHash();
$vars->{'products'} = $selectable->{legal_products};
$vars->{'components'} = $selectable->{legal_components};
$vars->{'components_by_product'} = $selectable->{components};
$vars->{'excluded_columns'} = \@excluded_columns;
$vars->{'group_field'} = $::FORM{'group'};