diff options
-rwxr-xr-x | editflagtypes.cgi | 15 | ||||
-rw-r--r-- | template/en/default/admin/flag-type/list.html.tmpl | 26 |
2 files changed, 41 insertions, 0 deletions
diff --git a/editflagtypes.cgi b/editflagtypes.cgi index 4117c91e8..d77c6b8a3 100755 --- a/editflagtypes.cgi +++ b/editflagtypes.cgi @@ -100,6 +100,7 @@ sub list { my $component = validateComponent($product, scalar $cgi->param('component')); my $product_id = $product ? $product->id : 0; my $component_id = $component ? $component->id : 0; + my $show_flag_counts = (defined $cgi->param('show_flag_counts')) ? 1 : 0; # Define the variables and functions that will be passed to the UI template. $vars->{'selected_product'} = $cgi->param('product'); @@ -140,6 +141,20 @@ sub list { 'group' => scalar $cgi->param('group')}); } + if ($show_flag_counts) { + my %bug_lists; + my %map = ('+' => 'granted', '-' => 'denied', '?' => 'pending'); + + foreach my $flagtype (@$bug_flagtypes, @$attach_flagtypes) { + $bug_lists{$flagtype->id} = {}; + my $flags = Bugzilla::Flag->match({type_id => $flagtype->id}); + # Build lists of bugs, triaged by flag status. + map { push(@{$bug_lists{$flagtype->id}->{$map{$_->status}}}, $_->bug_id) } @$flags; + } + $vars->{'bug_lists'} = \%bug_lists; + $vars->{'show_flag_counts'} = 1; + } + $vars->{'bug_types'} = $bug_flagtypes; $vars->{'attachment_types'} = $attach_flagtypes; diff --git a/template/en/default/admin/flag-type/list.html.tmpl b/template/en/default/admin/flag-type/list.html.tmpl index d4bba945a..497d3b3d5 100644 --- a/template/en/default/admin/flag-type/list.html.tmpl +++ b/template/en/default/admin/flag-type/list.html.tmpl @@ -16,6 +16,7 @@ # Rights Reserved. # # Contributor(s): Myk Melez <myk@mozilla.org> + # Frédéric Buclin <LpSolit@gmail.com> #%] [% PROCESS global/variables.none.tmpl %] @@ -80,6 +81,11 @@ [% END %] </select> </td> + <td> + <input type="checkbox" id="show_flag_counts" name="show_flag_counts" value="1" + [%+ 'checked="checked"' IF show_flag_counts %]> + <label for="show_flag_counts">Show flag counts</label> + </td> <td><input type="submit" id="submit" value="Filter"></td> </tr> </table> @@ -114,6 +120,11 @@ <th>Properties</th> <th>Grant group</th> <th>Request group</th> + [% IF show_flag_counts %] + <th>Flags</th> + [%# Note to translators: translate the strings in quotes only. %] + [% state_desc = {granted = 'granted' denied = 'denied' pending = 'pending'} %] + [% END %] <th>Actions</th> </tr> @@ -136,6 +147,21 @@ </td> <td>[% IF type.grant_group %][% type.grant_group.name FILTER html %][% END %]</td> <td>[% IF type.request_group %][% type.request_group.name FILTER html %][% END %]</td> + [% IF show_flag_counts %] + <td> + [% FOREACH state = ['granted', 'pending', 'denied'] %] + [% bug_list = bug_lists.${type.id}.$state || [] %] + [% IF bug_list.size %] + <a href="buglist.cgi?bug_id=[% bug_list.unique.nsort.join(",") FILTER html %]"> + [% bug_list.size FILTER html %] [%+ state_desc.$state FILTER html %] + </a> + <br> + [% ELSE %] + 0 [% state_desc.$state FILTER html %]<br> + [% END %] + [% END %] + </td> + [% END %] <td> <a href="editflagtypes.cgi?action=copy&id=[% type.id %]">Copy</a> | <a href="editflagtypes.cgi?action=confirmdelete&id=[% type.id %]">Delete</a> |