summaryrefslogtreecommitdiffstats
path: root/extensions/BMO/Extension.pm
diff options
context:
space:
mode:
Diffstat (limited to 'extensions/BMO/Extension.pm')
-rw-r--r--extensions/BMO/Extension.pm40
1 files changed, 29 insertions, 11 deletions
diff --git a/extensions/BMO/Extension.pm b/extensions/BMO/Extension.pm
index 5515f56db..2e2a9c168 100644
--- a/extensions/BMO/Extension.pm
+++ b/extensions/BMO/Extension.pm
@@ -158,6 +158,17 @@ sub template_before_process {
$vars->{attachment} = Bugzilla::Attachment->new({ id => $attachid, cache => 1 })
if $attachid;
}
+
+ if ($file =~ /^admin\/products\/(create|edit)\./) {
+ my $product = $vars->{product};
+ my $security_groups = Bugzilla::Group->match({ isbuggroup => 1, isactive => 1 });
+ # If set group is not active currently, we add it into the list
+ if (!grep($_->name eq $product->default_security_group, @$security_groups)) {
+ push(@$security_groups, $product->default_security_group_obj);
+ @$security_groups = sort { $a->name cmp $b->name } @$security_groups;
+ }
+ $vars->{security_groups} = $security_groups;
+ }
}
sub page_before_template {
@@ -678,13 +689,21 @@ sub quicksearch_map {
sub object_columns {
my ($self, $args) = @_;
return unless $args->{class}->isa('Bugzilla::Product');
- push @{ $args->{columns} }, qw( default_platform_id default_op_sys_id );
+ push @{ $args->{columns} }, qw(
+ default_platform_id
+ default_op_sys_id
+ security_group_id
+ );
}
sub object_update_columns {
my ($self, $args) = @_;
return unless $args->{object}->isa('Bugzilla::Product');
- push @{ $args->{columns} }, qw( default_platform_id default_op_sys_id );
+ push @{ $args->{columns} }, qw(
+ default_platform_id
+ default_op_sys_id
+ security_group_id
+ );
}
sub object_before_create {
@@ -693,7 +712,7 @@ sub object_before_create {
my $cgi = Bugzilla->cgi;
my $params = $args->{params};
- foreach my $field (qw( default_platform_id default_op_sys_id )) {
+ foreach my $field (qw( default_platform_id default_op_sys_id security_group_id )) {
$params->{$field} = $cgi->param($field);
}
}
@@ -705,7 +724,7 @@ sub object_end_of_set_all {
my $cgi = Bugzilla->cgi;
my $params = $args->{params};
- foreach my $field (qw( default_platform_id default_op_sys_id )) {
+ foreach my $field (qw( default_platform_id default_op_sys_id security_group_id )) {
my $value = $cgi->param($field);
detaint_natural($value);
$object->set($field, $value);
@@ -1989,16 +2008,15 @@ sub _group_always_settable {
}
sub _default_security_group {
- my ($self) = @_;
- return exists $product_sec_groups{$self->name}
- ? $product_sec_groups{$self->name}
- : $product_sec_groups{_default};
+ return $_[0]->default_security_group_obj->name;
}
sub _default_security_group_obj {
- my ($self) = @_;
- return unless my $group_name = $self->default_security_group;
- return Bugzilla::Group->new({ name => $group_name, cache => 1 })
+ my $group_id = $_[0]->{security_group_id};
+ if (!$group_id) {
+ return Bugzilla::Group->new({ name => Bugzilla->params->{insidergroup}, cache => 1 });
+ }
+ return Bugzilla::Group->new({ id => $group_id, cache => 1 });
}
# called from the verify version, component, and group page.