diff options
Diffstat (limited to 'template/en/default/flag/list.html.tmpl')
-rw-r--r-- | template/en/default/flag/list.html.tmpl | 80 |
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> </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 %] |