|
18 | 18 | # Contributor(s): Myk Melez <myk@mozilla.org> |
19 | 19 | #%] |
20 | 20 |
|
21 | | -[% IF user.id && !read_only_flags && (!bug || bug.check_can_change_field('flagtypes.name', 0, 1)) %] |
| 21 | +[% IF user.id && (!bug || bug.check_can_change_field('flagtypes.name', 0, 1)) %] |
22 | 22 |
|
23 | 23 | [%# We list flags by looping twice over the flag types relevant for the bug. |
24 | 24 | # In the first loop, we display existing flags and then, for active types, |
|
53 | 53 | [% FOREACH flag = type.flags %] |
54 | 54 | [% PROCESS flag_row flag = flag type = type %] |
55 | 55 | [% END -%] |
| 56 | + |
56 | 57 | [% SET flag = "" %] |
| 58 | + [% NEXT IF read_only_flags %] |
57 | 59 |
|
58 | 60 | [%-# Step 1b: Display UI for setting flag. %] |
59 | 61 | [% IF (!type.flags || type.flags.size == 0) && type.is_active %] |
60 | 62 | [% PROCESS flag_row type = type %] |
61 | 63 | [% END %] |
62 | 64 | [% END %] |
63 | 65 |
|
64 | | - [%# Step 2: Display flag type again (if type is multiplicable). %] |
65 | | - [% FOREACH type = flag_types %] |
66 | | - [% NEXT UNLESS type.flags && type.flags.size > 0 && type.is_multiplicable && type.is_active %] |
67 | | - [% IF !separator_displayed %] |
68 | | - <tbody class="bz_flag_type"> |
69 | | - <tr><td colspan="3"><hr></td></tr> |
70 | | - </tbody> |
71 | | - [% separator_displayed = 1 %] |
| 66 | + [% IF !read_only_flags %] |
| 67 | + [%# Step 2: Display flag type again (if type is multiplicable). %] |
| 68 | + [% FOREACH type = flag_types %] |
| 69 | + [% NEXT UNLESS type.flags && type.flags.size > 0 && type.is_multiplicable && type.is_active %] |
| 70 | + [% IF !separator_displayed %] |
| 71 | + <tbody class="bz_flag_type"> |
| 72 | + <tr><td colspan="3"><hr></td></tr> |
| 73 | + </tbody> |
| 74 | + [% separator_displayed = 1 %] |
| 75 | + [% END %] |
| 76 | + [% PROCESS flag_row type = type addl_text = "addl." %] |
72 | 77 | [% END %] |
73 | | - [% PROCESS flag_row type = type addl_text = "addl." %] |
74 | 78 | [% END %] |
75 | 79 | </table> |
76 | 80 |
|
|
104 | 108 |
|
105 | 109 | [% BLOCK flag_row %] |
106 | 110 | [% SET fid = flag ? "flag-$flag.id" : "flag_type-$type.id" %] |
| 111 | + [% can_edit_flag = (!read_only_flags || (flag && (flag.setter_id == user.id || (flag.requestee_id && flag.requestee_id == user.id)))) ? 1 : 0 %] |
107 | 112 | <tbody[% ' class="bz_flag_type"' IF !flag %]> |
108 | 113 | <tr> |
109 | 114 | <td> |
|
125 | 130 | [% END %] |
126 | 131 | title="[% type.description FILTER html %]" |
127 | 132 | onchange="toggleRequesteeField(this);" |
128 | | - class="flag_select flag_type-[% type.id %]"> |
| 133 | + class="flag_select flag_type-[% type.id %]" |
| 134 | + [% IF !can_edit_flag %] disabled="disabled"[% END %]> |
129 | 135 | [%# Only display statuses the user is allowed to set. %] |
130 | | - [% IF !flag || user.can_request_flag(type) || flag.setter_id == user.id %] |
| 136 | + [% IF !flag || (can_edit_flag && user.can_request_flag(type)) || flag.setter_id == user.id %] |
131 | 137 | <option value="X"></option> |
132 | 138 | [% END %] |
133 | | - [% IF type.is_active %] |
| 139 | + [% IF type.is_active && can_edit_flag %] |
134 | 140 | [% IF (type.is_requestable && user.can_request_flag(type)) || (flag && flag.status == "?") %] |
135 | 141 | <option value="?" [% "selected" IF flag && flag.status == "?" %]>?</option> |
136 | 142 | [% END %] |
|
151 | 157 | <span style="white-space: nowrap;"> |
152 | 158 | [% SET grant_list = [] %] |
153 | 159 | [% IF Param('usemenuforusers') %] |
154 | | - [% grant_list = type.grant_list %] |
155 | | - [% IF flag && !(type.is_active && type.is_requestable && type.is_requesteeble) %] |
| 160 | + [% IF !can_edit_flag || (flag && !(type.is_active && type.is_requestable && type.is_requesteeble)) %] |
156 | 161 | [%# We are here only because there was already a requestee. In this case, |
157 | 162 | the only valid action is to remove the requestee or leave it alone; |
158 | 163 | nothing else. %] |
159 | 164 | [% grant_list = [flag.requestee] %] |
| 165 | + [% ELSE %] |
| 166 | + [% grant_list = type.grant_list %] |
160 | 167 | [% END %] |
161 | 168 | [% END %] |
162 | 169 | [% SET flag_name = flag ? "requestee-$flag.id" : "requestee_type-$type.id" %] |
|
171 | 178 | emptyok => flag_empty_ok |
172 | 179 | classes => ["requestee"] |
173 | 180 | custom_userlist => grant_list |
| 181 | + disabled => !can_edit_flag |
174 | 182 | %] |
175 | 183 | [% Hook.process("requestee", "flag/list.html.tmpl") %] |
176 | 184 | </span> |
|
0 commit comments