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:
@@ -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
|
||||
},
|
||||
|
||||
@@ -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(" .
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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'}) {
|
||||
|
||||
|
||||
@@ -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'};
|
||||
|
||||
Reference in New Issue
Block a user