aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'template/en/default/flag/list.html.tmpl')
-rw-r--r--template/en/default/flag/list.html.tmpl80
1 files changed, 52 insertions, 28 deletions
diff --git a/template/en/default/flag/list.html.tmpl b/template/en/default/flag/list.html.tmpl
index 4d7eefb48..169cf8a51 100644
--- a/template/en/default/flag/list.html.tmpl
+++ b/template/en/default/flag/list.html.tmpl
@@ -6,7 +6,7 @@
# defined by the Mozilla Public License, v. 2.0.
#%]
-[% IF user.id && !read_only_flags && (!bug || bug.check_can_change_field('flagtypes.name', 0, 1)) %]
+[% IF user.id && (!bug || bug.check_can_change_field('flagtypes.name', 0, 1)) %]
[%# We list flags by looping twice over the flag types relevant for the bug.
# In the first loop, we display existing flags and then, for active types,
@@ -23,13 +23,12 @@
<table id="[% flag_table_id FILTER html %]">
[% UNLESS flag_no_header %]
<tr>
- <th colspan="3">
- Flags:
- </th>
+ <th colspan="3">Flags:</th>
[% IF any_flags_requesteeble %]
- <th>
- Requestee:
- </th>
+ <th>Requestee:</th>
+ [% END %]
+ [% IF edit_multiple_bugs %]
+ <th>&nbsp;</th>
[% END %]
</tr>
[% END %]
@@ -41,7 +40,9 @@
[% FOREACH flag = type.flags %]
[% PROCESS flag_row flag = flag type = type %]
[% END -%]
+
[% SET flag = "" %]
+ [% NEXT IF read_only_flags %]
[%-# Step 1b: Display UI for setting flag. %]
[% IF (!type.flags || type.flags.size == 0) && type.is_active %]
@@ -49,16 +50,21 @@
[% END %]
[% END %]
- [%# Step 2: Display flag type again (if type is multiplicable). %]
- [% FOREACH type = flag_types %]
- [% NEXT UNLESS type.flags && type.flags.size > 0 && type.is_multiplicable && type.is_active %]
- [% IF !separator_displayed %]
- <tbody class="bz_flag_type">
- <tr><td colspan="3"><hr></td></tr>
- </tbody>
- [% separator_displayed = 1 %]
+ [% IF !read_only_flags %]
+ [%# Step 2: Display flag type again (if type is multiplicable). %]
+ [% FOREACH type = flag_types %]
+ [% NEXT UNLESS type.flags && type.flags.size > 0 && type.is_multiplicable && type.is_active %]
+ [% IF !separator_displayed %]
+ <tbody class="bz_flag_type">
+ [% sep_length = 3 + (any_flags_requesteeble ? 1 : 0) + (edit_multiple_bugs ? 1 : 0) %]
+ <tr>
+ <td colspan="[% sep_length FILTER html %]"><hr></td>
+ </tr>
+ </tbody>
+ [% separator_displayed = 1 %]
+ [% END %]
+ [% PROCESS flag_row type = type addl_text = "addl." %]
[% END %]
- [% PROCESS flag_row type = type addl_text = "addl." %]
[% END %]
</table>
@@ -76,7 +82,7 @@
[% ELSE %]
[% flag.setter.nick FILTER html %]:
[% END %]
- [%+ type.name FILTER html FILTER no_break %][% flag.status %]
+ <span class="nowrap">[%+ type.name FILTER html %][% flag.status %]</span>
[% IF flag.requestee %]
[% IF flag.requestee.name %]
(<span title="[% flag.requestee.name FILTER html %]">[% flag.requestee.nick FILTER html %]</span>)
@@ -93,6 +99,7 @@
[% BLOCK flag_row %]
[% RETURN IF !flag && !((type.is_requestable && user.can_request_flag(type)) || user.can_set_flag(type)) %]
[% SET fid = flag ? "flag-$flag.id" : "flag_type-$type.id" %]
+ [% can_edit_flag = (!read_only_flags || (flag && (flag.setter_id == user.id || (flag.requestee_id && flag.requestee_id == user.id)))) ? 1 : 0 %]
<tbody[% ' class="bz_flag_type"' IF !flag %]>
<tr>
<td>
@@ -102,21 +109,25 @@
[% addl_text FILTER html %]
[% END %]
</td>
- <td>
+ <td class="nowrap">
<label title="[% type.description FILTER html %]" for="[% fid FILTER html %]">
- [%- type.name FILTER html FILTER no_break -%]</label>
+ [%- type.name FILTER html %]</label>
</td>
<td>
<input type="hidden" id="[% fid FILTER html %]_dirty">
<select id="[% fid FILTER html %]" name="[% fid FILTER html %]"
title="[% type.description FILTER html %]"
onchange="toggleRequesteeField(this);"
- class="flag_select flag_type-[% type.id %]">
+ class="flag_select flag_type-[% type.id %]"
+ [% IF !can_edit_flag %] disabled="disabled"[% END %]>
[%# Only display statuses the user is allowed to set. %]
- [% IF !flag || user.can_request_flag(type) || flag.setter_id == user.id %]
- <option value="X"></option>
+ [% IF edit_multiple_bugs %]
+ <option value="--do_not_change--">--do_not_change--</option>
+ [% END %]
+ [% IF !flag || (can_edit_flag && user.can_request_flag(type)) || flag.setter_id == user.id %]
+ <option value="X" label="X"></option>
[% END %]
- [% IF type.is_active %]
+ [% IF type.is_active && can_edit_flag %]
[% IF (type.is_requestable && user.can_request_flag(type)) || (flag && flag.status == "?") %]
<option value="?" [% "selected" IF flag && flag.status == "?" %]>?</option>
[% END %]
@@ -132,17 +143,17 @@
</select>
</td>
[% IF any_flags_requesteeble %]
- <td>
+ <td class="bz_flags">
[% IF (type.is_active && type.is_requestable && type.is_requesteeble) || (flag && flag.requestee) %]
- <span style="white-space: nowrap;">
[% SET grant_list = [] %]
[% IF Param('usemenuforusers') %]
- [% grant_list = type.grant_list %]
- [% IF flag && !(type.is_active && type.is_requestable && type.is_requesteeble) %]
+ [% IF !can_edit_flag || (flag && !(type.is_active && type.is_requestable && type.is_requesteeble)) %]
[%# We are here only because there was already a requestee. In this case,
the only valid action is to remove the requestee or leave it alone;
nothing else. %]
[% grant_list = [flag.requestee] %]
+ [% ELSE %]
+ [% grant_list = type.grant_list %]
[% END %]
[% END %]
[% SET flag_name = flag ? "requestee-$flag.id" : "requestee_type-$type.id" %]
@@ -157,11 +168,24 @@
emptyok => flag_empty_ok
classes => ["requestee"]
custom_userlist => grant_list
+ disabled => !can_edit_flag
%]
- </span>
[% END %]
</td>
[% END %]
+ [% IF edit_multiple_bugs %]
+ <td>
+ [% IF type.is_multiplicable %]
+ <input type="checkbox" name="flags_add-[% type.id %]"
+ id="flags_add-[% type.id %]" value="1">
+ <label for="flags_add-[% type.id %]"
+ title="If ticked, always create a new flag. Leaving it unchecked will
+ update existing flag(s) and add a new flag if it does not exist">
+ Always add
+ </label>
+ [% END %]
+ </td>
+ [% END %]
</tr>
</tbody>
[% END %]