diff options
-rw-r--r-- | template/en/default/account/prefs/prefs.html.tmpl | 1 | ||||
-rw-r--r-- | template/en/default/account/prefs/saved-searches.html.tmpl | 33 | ||||
-rwxr-xr-x | userprefs.cgi | 8 |
3 files changed, 37 insertions, 5 deletions
diff --git a/template/en/default/account/prefs/prefs.html.tmpl b/template/en/default/account/prefs/prefs.html.tmpl index da1b489e8..eada10557 100644 --- a/template/en/default/account/prefs/prefs.html.tmpl +++ b/template/en/default/account/prefs/prefs.html.tmpl @@ -41,6 +41,7 @@ title = "User Preferences" subheader = filtered_login style_urls = ['skins/standard/admin.css'] + javascript_urls = ['js/util.js'] %] [% tabs = [{ name => "settings", label => "General Preferences", diff --git a/template/en/default/account/prefs/saved-searches.html.tmpl b/template/en/default/account/prefs/saved-searches.html.tmpl index 2e5c8eac6..173933d00 100644 --- a/template/en/default/account/prefs/saved-searches.html.tmpl +++ b/template/en/default/account/prefs/saved-searches.html.tmpl @@ -22,8 +22,25 @@ [%# INTERFACE: # queryshare_groups: list of groups the user may share queries with # (id, name). + # bless_group_ids: list of group ids the user may bless. #%] +[% IF user.can_bless %] + <script type="text/javascript"><!-- + function update_checkbox(group) { + var bless_groups = [[% bless_group_ids.join(",") FILTER js %]]; + var checkbox = document.getElementById(group.name.replace(/share_(\d+)/, "force_$1")); + + if (bz_isValueInArray(bless_groups, group.value)) { + checkbox.disabled = false; + } else { + checkbox.disabled = true; + checkbox.checked = false; + } + } //--> + </script> +[% END %] + <p>Your saved searches are as follows:</p> <blockquote> @@ -103,7 +120,8 @@ </td> [% IF may_share %] <td> - <select name="share_[% q.id FILTER html %]"> + <select name="share_[% q.id FILTER html %]" + [% IF user.can_bless %] onchange="update_checkbox(this);"[% END %]> <option value="">Don't share</option> [% FOREACH group = queryshare_groups %] <option value="[% group.id %]" @@ -112,6 +130,14 @@ >[% group.name FILTER html %]</option> [% END %] </select> + [% IF user.can_bless %] + <input type="checkbox" id="force_[% q.id FILTER html %]" + name="force_[% q.id FILTER html %]" value="1" + [% " disabled" + IF !bless_group_ids.grep("^$q.shared_with_group.id\$").0 + %]> + <label for="force_[% q.id FILTER html %]">Add to footer</label> + [% END %] [% IF q.shared_with_users %] (shared with [% q.shared_with_users FILTER html %] [%+ q.shared_with_users > 1 ? "users" : "user" %]) @@ -121,6 +147,11 @@ </tr> [% END %] </table> +[% IF user.can_bless %] + <p>Note that for every search that has the "Add to footer" selected, a + link to the shared search is added to the footer of every user that is + a direct member of the group at the time you click Submit Changes.</p> +[% END %] </blockquote> <p>You may use these searches saved and shared by others:</p> diff --git a/userprefs.cgi b/userprefs.cgi index 1ad7f906e..8f2e69f1e 100755 --- a/userprefs.cgi +++ b/userprefs.cgi @@ -399,6 +399,7 @@ sub DoSavedSearches { $vars->{'queryshare_groups'} = Bugzilla::Group->new_from_list($user->queryshare_groups); } + $vars->{'bless_group_ids'} = [map {$_->{'id'}} @{$user->bless_groups}]; } sub SaveSavedSearches { @@ -458,10 +459,9 @@ sub SaveSavedSearches { } # If we're sharing our query with a group we can bless, we - # subscribe direct group members to our search automatically. - # Otherwise, the group members need to opt in. This behaviour - # is deemed most likely to fit users' needs. - if ($user->can_bless($group_id)) { + # have the ability to add link to our search to the footer of + # direct group members automatically. + if ($user->can_bless($group_id) && $cgi->param('force_' . $q->id)) { my $group = new Bugzilla::Group($group_id); my $members = $group->members_non_inherited; foreach my $member (@$members) { |