diff options
-rwxr-xr-x | buglist.cgi | 29 | ||||
-rw-r--r-- | css/buglist.css | 5 | ||||
-rw-r--r-- | skins/standard/buglist.css | 5 | ||||
-rw-r--r-- | template/en/default/list/table.html.tmpl | 3 |
4 files changed, 31 insertions, 11 deletions
diff --git a/buglist.cgi b/buglist.cgi index 9cde2dcf8..3c5e73255 100755 --- a/buglist.cgi +++ b/buglist.cgi @@ -812,7 +812,7 @@ while (my @row = FetchSQLData()) { $bugproducts->{$bug->{'product'}} = 1 if $bug->{'product'}; $bugstatuses->{$bug->{'bug_status'}} = 1 if $bug->{'bug_status'}; - $bug->{isingroups} = 0; + $bug->{'secure_mode'} = undef; # Add the record to the list. push(@bugs, $bug); @@ -821,20 +821,29 @@ while (my @row = FetchSQLData()) { push(@bugidlist, $bug->{'bug_id'}); } -# Check for bug privacy and set $bug->{isingroups} = 1 if private -# to 1 or more groups -my %privatebugs; +# Check for bug privacy and set $bug->{'secure_mode'} to 'implied' or 'manual' +# based on whether the privacy is simply product implied (by mandatory groups) +# or because of human choice +my %min_membercontrol; if (@bugidlist) { - SendSQL("SELECT DISTINCT bugs.bug_id FROM bugs, bug_group_map " . + SendSQL("SELECT DISTINCT bugs.bug_id, MIN(group_control_map.membercontrol) " . + "FROM bugs, bug_group_map " . + "LEFT JOIN group_control_map " . + "ON group_control_map.product_id=bugs.product_id " . + "AND group_control_map.group_id=bug_group_map.group_id " . "WHERE bugs.bug_id = bug_group_map.bug_id " . - "AND bugs.bug_id IN (" . join(',',@bugidlist) . ")"); + "AND bugs.bug_id IN (" . join(',',@bugidlist) . ") " . + "GROUP BY bugs.bug_id"); while (MoreSQLData()) { - my ($bug_id) = FetchSQLData(); - $privatebugs{$bug_id} = 1; + my ($bug_id, $min_membercontrol) = FetchSQLData(); + $min_membercontrol{$bug_id} = $min_membercontrol; } foreach my $bug (@bugs) { - if ($privatebugs{$bug->{'bug_id'}}) { - $bug->{isingroups} = 1; + if ($min_membercontrol{$bug->{'bug_id'}} == CONTROLMAPSHOWN + || $min_membercontrol{$bug->{'bug_id'}} == CONTROLMAPDEFAULT) { + $bug->{'secure_mode'} = 'manual'; + } elsif ($min_membercontrol{$bug->{'bug_id'}} == CONTROLMAPMANDATORY) { + $bug->{'secure_mode'} = 'implied'; } } } diff --git a/css/buglist.css b/css/buglist.css index 6051b95d9..f8b814abe 100644 --- a/css/buglist.css +++ b/css/buglist.css @@ -50,3 +50,8 @@ tr.bz_secure td.first-child { background-color: inherit; } +tr.bz_secure_mode_implied td.first-child { +} + +tr.bz_secure_mode_manual td.first-child { +} diff --git a/skins/standard/buglist.css b/skins/standard/buglist.css index 6051b95d9..f8b814abe 100644 --- a/skins/standard/buglist.css +++ b/skins/standard/buglist.css @@ -50,3 +50,8 @@ tr.bz_secure td.first-child { background-color: inherit; } +tr.bz_secure_mode_implied td.first-child { +} + +tr.bz_secure_mode_manual td.first-child { +} diff --git a/template/en/default/list/table.html.tmpl b/template/en/default/list/table.html.tmpl index 5a2cf8418..98db7ec52 100644 --- a/template/en/default/list/table.html.tmpl +++ b/template/en/default/list/table.html.tmpl @@ -152,7 +152,8 @@ bz_[% bug.priority FILTER css_class_quote %] bz_[% bug.bug_status FILTER css_class_quote %] [%+ "bz_$bug.resolution" FILTER css_class_quote IF bug.resolution %] - [%+ "bz_secure" IF bug.isingroups %] + [%+ "bz_secure" IF bug.secure_mode %] + [%+ "bz_secure_mode_$bug.secure_mode" FILTER css_class_quote IF bug.secure_mode %] [%+ count % 2 == 1 ? "bz_odd" : "bz_even" %] "> |