summaryrefslogtreecommitdiffstats
path: root/extensions/BugmailFilter/Extension.pm
diff options
context:
space:
mode:
authorByron Jones <glob@mozilla.com>2014-07-15 07:25:05 +0200
committerByron Jones <glob@mozilla.com>2014-07-15 07:25:05 +0200
commit3e8a6b2bdcd591af4e67002489a71753c7920c7a (patch)
treeb23cb1cec75f3ab37a7a3ce07bc7a9acd49862fc /extensions/BugmailFilter/Extension.pm
parentf7e326aa8d8a30eebb0156223a9e554bffc0f5ac (diff)
downloadbugzilla-3e8a6b2bdcd591af4e67002489a71753c7920c7a.tar.gz
bugzilla-3e8a6b2bdcd591af4e67002489a71753c7920c7a.tar.xz
Bug 1036303: add a list of tracking/project/etc tracking flags to the bugmail filtering prefs page
Diffstat (limited to 'extensions/BugmailFilter/Extension.pm')
-rw-r--r--extensions/BugmailFilter/Extension.pm27
1 files changed, 24 insertions, 3 deletions
diff --git a/extensions/BugmailFilter/Extension.pm b/extensions/BugmailFilter/Extension.pm
index 6bcfe70d6..60c180ca7 100644
--- a/extensions/BugmailFilter/Extension.pm
+++ b/extensions/BugmailFilter/Extension.pm
@@ -116,7 +116,7 @@ sub user_preferences {
# remove all tracking flag fields. these change too frequently to be of
# value, so they only add noise to the list.
- foreach my $field (@{ Bugzilla->tracking_flag_names }) {
+ foreach my $field (Bugzilla->tracking_flag_names) {
delete $fields{$field};
}
@@ -159,6 +159,27 @@ sub user_preferences {
}) }
];
+ # build a list of tracking-flags, grouped by type
+ require Bugzilla::Extension::TrackingFlags::Constants;
+ require Bugzilla::Extension::TrackingFlags::Flag;
+ my %flag_types =
+ map { $_->{name} => $_->{description} }
+ @{ Bugzilla::Extension::TrackingFlags::Constants::FLAG_TYPES() };
+ my %tracking_flags_by_type;
+ foreach my $flag (Bugzilla::Extension::TrackingFlags::Flag->get_all) {
+ my $type = $flag_types{$flag->flag_type};
+ $tracking_flags_by_type{$type} //= [];
+ push @{ $tracking_flags_by_type{$type} }, $flag;
+ }
+ my @tracking_flags_by_type;
+ foreach my $type (sort keys %tracking_flags_by_type) {
+ push @tracking_flags_by_type, {
+ name => $type,
+ flags => $tracking_flags_by_type{$type},
+ };
+ }
+ $vars->{tracking_flags_by_type} = \@tracking_flags_by_type;
+
${ $args->{handled} } = 1;
}
@@ -197,7 +218,7 @@ sub user_wants_mail {
require Bugzilla::Extension::TrackingFlags::Flag;
my %count;
my @tracking_flags;
- foreach my $field (@$fields, @{ Bugzilla->tracking_flag_names }) {
+ foreach my $field (@$fields, Bugzilla->tracking_flag_names) {
$count{$field}++;
}
foreach my $field (keys %count) {
@@ -212,7 +233,7 @@ sub user_wants_mail {
foreach my $type (keys %tracking_types) {
push @$fields, 'tracking.' . $type;
}
- foreach my $field (@{ Bugzilla->tracking_flag_names }) {
+ foreach my $field (Bugzilla->tracking_flag_names) {
$fields = [ grep { $_ ne $field } @$fields ];
}