summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--extensions/UserStory/Extension.pm21
-rw-r--r--extensions/UserStory/lib/Constants.pm15
-rw-r--r--extensions/UserStory/template/en/default/hook/bug/comments-comment_banner.html.tmpl2
3 files changed, 29 insertions, 9 deletions
diff --git a/extensions/UserStory/Extension.pm b/extensions/UserStory/Extension.pm
index 26f2c6bab..a60b86e0c 100644
--- a/extensions/UserStory/Extension.pm
+++ b/extensions/UserStory/Extension.pm
@@ -19,12 +19,25 @@ use Bugzilla::Extension::UserStory::Constants;
use Text::Diff;
BEGIN {
- *Bugzilla::Product::user_story_group = \&_product_user_story_group;
+ *Bugzilla::Bug::user_story_group = \&_bug_user_story_group;
}
-sub _product_user_story_group {
+sub _bug_user_story_group {
my ($self) = @_;
- return USER_STORY_PRODUCTS->{$self->name};
+ if (!exists $self->{user_story_group}) {
+ my ($product, $component) = ($self->product, $self->component);
+ my $edit_group = '';
+ if (exists USER_STORY->{$product}) {
+ my $components = USER_STORY->{$product}->{components};
+ if (scalar(@$components) == 0
+ || grep { $_ eq $component } @$components)
+ {
+ $edit_group = USER_STORY->{$product}->{group};
+ }
+ }
+ $self->{user_story_group} = $edit_group;
+ }
+ return $self->{user_story_group};
}
# ensure user is allowed to edit the story
@@ -34,7 +47,7 @@ sub bug_check_can_change_field {
return unless $field eq 'cf_user_story';
my $user = Bugzilla->user;
- my $group = $bug->product_obj->user_story_group()
+ my $group = $bug->user_story_group()
|| return;
if (!$user->in_group($group)) {
push (@$priv_results, PRIVILEGES_REQUIRED_EMPOWERED);
diff --git a/extensions/UserStory/lib/Constants.pm b/extensions/UserStory/lib/Constants.pm
index dca38154c..972e7c53d 100644
--- a/extensions/UserStory/lib/Constants.pm
+++ b/extensions/UserStory/lib/Constants.pm
@@ -12,11 +12,18 @@ use warnings;
use base qw(Exporter);
-our @EXPORT = qw( USER_STORY_PRODUCTS );
+our @EXPORT = qw( USER_STORY );
-use constant USER_STORY_PRODUCTS => {
- # product group required to edit
- Tracking => 'editbugs',
+use constant USER_STORY => {
+ # note - an empty components array means all components
+ Tracking => {
+ group => 'editbugs',
+ components => [],
+ },
+ Firefox => {
+ group => 'editbugs',
+ components => [ 'Developer Tools: User Stories' ],
+ },
};
1;
diff --git a/extensions/UserStory/template/en/default/hook/bug/comments-comment_banner.html.tmpl b/extensions/UserStory/template/en/default/hook/bug/comments-comment_banner.html.tmpl
index f58c2fb8b..0f5c0bcd6 100644
--- a/extensions/UserStory/template/en/default/hook/bug/comments-comment_banner.html.tmpl
+++ b/extensions/UserStory/template/en/default/hook/bug/comments-comment_banner.html.tmpl
@@ -6,7 +6,7 @@
# defined by the Mozilla Public License, v. 2.0.
#%]
-[% RETURN UNLESS bug.product_obj.user_story_group %]
+[% RETURN UNLESS bug.user_story_group %]
[% can_edit_story = bug.check_can_change_field('cf_user_story', 0, 1) %]
<div class="user_story">