]> git.ipfire.org Git - thirdparty/bugzilla.git/commitdiff
Bug 616679: A user with local editcomponents privs should be able to set the grant...
authorFrédéric Buclin <LpSolit@gmail.com>
Mon, 4 Jul 2011 20:43:06 +0000 (22:43 +0200)
committerFrédéric Buclin <LpSolit@gmail.com>
Mon, 4 Jul 2011 20:43:06 +0000 (22:43 +0200)
a=LpSolit

editflagtypes.cgi
template/en/default/admin/flag-type/edit.html.tmpl

index 4d11eecdb43f52381fa20d4013d33786f283d299..d78942c07e80c47e62bca81c205447795871f1ce 100755 (executable)
@@ -122,7 +122,7 @@ if (my ($category_action) = grep { $_ =~ /^categoryAction-(?:\w+)$/ } $cgi->para
         }
     }
 
-    $vars->{'groups'} = [Bugzilla::Group->get_all];
+    $vars->{'groups'} = get_settable_groups();
     $vars->{'action'} = $action;
 
     my $type = {};
@@ -226,7 +226,7 @@ if ($action eq 'enter') {
       if $user->in_group('editcomponents');
     $vars->{'can_fully_edit'} = 1;
     # Get a list of groups available to restrict this flag type against.
-    $vars->{'groups'} = [Bugzilla::Group->get_all];
+    $vars->{'groups'} = get_settable_groups();
 
     $template->process("admin/flag-type/edit.html.tmpl", $vars)
       || ThrowTemplateError($template->error());
@@ -258,7 +258,7 @@ if ($action eq 'edit' || $action eq 'copy') {
     }
 
     # Get a list of groups available to restrict this flag type against.
-    $vars->{'groups'} = [Bugzilla::Group->get_all];
+    $vars->{'groups'} = get_settable_groups();
 
     $template->process("admin/flag-type/edit.html.tmpl", $vars)
       || ThrowTemplateError($template->error());
@@ -490,6 +490,12 @@ sub get_editable_flagtypes {
     return $flagtypes;
 }
 
+sub get_settable_groups {
+    my $user = Bugzilla->user;
+    my $groups = $user->in_group('editcomponents') ? [Bugzilla::Group->get_all] : $user->groups;
+    return $groups;
+}
+
 sub filter_group {
     my ($flag_types, $gid) = @_;
     return $flag_types unless $gid;
index 8db36e6ed374f90226bfcc95b58edc4ecb95f4c5..f44c44d9d4bdf343cf7b41695027f6767813ddf1 100644 (file)
 [% BLOCK group_select %]
   <select name="[% selname %]" id="[% selname %]" [%- ' disabled="disabled"' UNLESS can_fully_edit %]>
     <option value="">(no group)</option>
+    [% group_found = 0 %]
     [% FOREACH group = groups %]
       <option value="[% group.name FILTER html %]"
-        [% " selected" IF (type.${selname} && type.${selname}.name == group.name) %]>
-      [%- group.name FILTER html %]
+        [% IF type.${selname} && type.${selname}.name == group.name %]
+          [% ' selected="selected"' %]
+          [% group_found = 1 %]
+        [% END %]>
+        [%- group.name FILTER html ~%]
+      </option>
+    [% END %]
+    [% IF !group_found && type.${selname} %]
+      <option value="[% type.${selname}.name FILTER html %]" selected="selected">
+        [%- type.${selname}.name FILTER html ~%]
       </option>
     [% END %]
   </select>