]> git.ipfire.org Git - thirdparty/bugzilla.git/commitdiff
Bug 365890: Searches shared by users with bless rights are in the footer by default...
authorlpsolit%gmail.com <>
Sat, 21 Jul 2007 15:59:23 +0000 (15:59 +0000)
committerlpsolit%gmail.com <>
Sat, 21 Jul 2007 15:59:23 +0000 (15:59 +0000)
template/en/default/account/prefs/prefs.html.tmpl
template/en/default/account/prefs/saved-searches.html.tmpl
userprefs.cgi

index da1b489e816fd45d1d19042ed48c4bff9661790c..eada10557c4339e8edcda6b36408adda345d26ea 100644 (file)
@@ -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",
index 2e5c8eac6fde17d0017da12cb55e9fa0ef9abbeb..173933d0036d21b5471ec1818fce562f625f0909 100644 (file)
 [%# 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>
         </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 %]"
                 >[% 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" %])
       </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>
index 1ad7f906e626105c1094ba26aaf95e668c41d336..8f2e69f1e48a1142201d9f377aa869f7d4ac95f2 100755 (executable)
@@ -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) {