return 0;
};
+# Clone the array reference to leave the original one unaltered.
+$Template::Stash::LIST_OPS->{ clone } =
+ sub {
+ my $list = shift;
+ return [@$list];
+ };
+
# Allow us to still get the scalar if we use the list operation ".0" on it,
# as we often do for defaults in query.cgi and other places.
$Template::Stash::SCALAR_OPS->{ 0 } =
return 1 if $directive =~ /^(time2str|url)\(/;
# Safe Template Toolkit virtual methods
- return 1 if $directive =~ /\.(length$|size$|push\()/;
+ return 1 if $directive =~ /\.(length$|size$|push\(|delete\()/;
# Special Template Toolkit loop variable
return 1 if $directive =~ /^loop\.(index|count)$/;
[% INCLUDE global/userselect.html.tmpl
name => "initialowner"
id => "initialowner"
- value => ""
size => 64
%]
</td>
[% INCLUDE global/userselect.html.tmpl
name => "initialqacontact"
id => "initialqacontact"
- value => ""
size => 64
emptyok => 1
%]
[% INCLUDE global/userselect.html.tmpl
name => "initialcc"
id => "initialcc"
- value => ""
size => 64
multiple => 5
%]
</th>
<td>
<select name="component" onchange="set_assign_to();" size="7">
+ [%# Build the lists of assignees and QA contacts if "usemenuforusers" is enabled. %]
+ [% IF Param("usemenuforusers") %]
+ [% assignees_list = user.get_userlist.clone %]
+ [% qa_contacts_list = user.get_userlist.clone %]
+ [% END %]
+
[%- FOREACH c = product.components %]
<option value="[% c.name FILTER html %]"
[% " selected=\"selected\"" IF c.name == default.component_ %]>
[% c.name FILTER html -%]
</option>
+ [% IF Param("usemenuforusers") %]
+ [% INCLUDE build_userlist default_user = c.default_assignee,
+ userlist = assignees_list %]
+ [% INCLUDE build_userlist default_user = c.default_qa_contact,
+ userlist = qa_contacts_list %]
+ [% END %]
[%- END %]
</select>
</td>
disabled => assigned_to_disabled
size => 30
emptyok => 1
+ custom_userlist => assignees_list
%]
<noscript>(Leave blank to assign to component's default assignee)</noscript>
</td>
disabled => qa_contact_disabled
size => 30
emptyok => 1
+ custom_userlist => qa_contacts_list
%]
<noscript>(Leave blank to assign to default qa contact)</noscript>
</td>
</select>
</td>
[% END %]
+
+[% BLOCK build_userlist %]
+ [% user_found = 0 %]
+ [% default_login = default_user.login %]
+ [% RETURN UNLESS default_login %]
+
+ [% FOREACH user = userlist %]
+ [% IF user.login == default_login %]
+ [% user_found = 1 %]
+ [% LAST %]
+ [% END %]
+ [% END %]
+
+ [% userlist.push({login => default_login,
+ identity => default_user.identity,
+ visible => 1})
+ UNLESS user_found %]
+[% END %]
[% INCLUDE global/userselect.html.tmpl
id => "newcc"
name => "newcc"
- value => ""
size => 30
multiple => 5
%]
# The Original Code is the Bugzilla Bug Tracking System.
#
# Contributor(s): Byron Jones <bugzilla@glob.com.au>
+ # Frédéric Buclin <LpSolit@gmail.com>
#%]
[%# INTERFACE:
# size: optional, input only; size attribute value
# emptyok: optional, select only; if true, prepend menu option to start of select
# multiple: optional, do multiselect box, value is size (height) of box
- # do_not_change: optional, contains the string meaning "do not alter this role"
# custom_userlist: optional, specify a limited list of users to use
#%]
<option value=""></option>
[% END %]
- [% IF do_not_change %]
- <option value="[% do_not_change FILTER html %]">
- [% do_not_change FILTER html %]
- </option>
- [% END %]
-
[% UNLESS custom_userlist %]
[% custom_userlist = user.get_userlist %]
[% END %]
[% SET selected = {} %]
- [% FOREACH selected_value IN value.split(', ') %]
- [% SET selected.$selected_value = 1 %]
+ [% IF value.defined %]
+ [% FOREACH selected_value IN value.split(', ') %]
+ [% SET selected.$selected_value = 1 %]
+ [% END %]
[% END %]
+
[% FOREACH tmpuser = custom_userlist %]
[% IF tmpuser.visible OR selected.${tmpuser.login} == 1 %]
<option value="[% tmpuser.login FILTER html %]"
- [% " selected=\"selected\"" IF selected.${tmpuser.login} == 1 %]
+ [% IF selected.${tmpuser.login} == 1 %]
+ selected="selected"
+ [%# A user account appears only once. Remove it from the list, so that
+ # we know if there are some selected accounts which have not been listed. %]
+ [% selected.delete(tmpuser.login) %]
+ [% END %]
>[% tmpuser.identity FILTER html %]</option>
[% END %]
[% END %]
+
+ [%# If the list is not empty, this means some accounts have not been mentioned yet. %]
+ [% FOREACH selected_user = selected.keys %]
+ <option value="[% selected_user FILTER html %]" selected="selected">[% selected_user FILTER html %]</option>
+ [% END %]
</select>
[% ELSE %]
<input
id => "assigned_to"
name => "assigned_to"
value => dontchange
- do_not_change => dontchange
size => 32
%]
<input type="checkbox" id="set_default_assignee" name="set_default_assignee" value="1">
id => "qa_contact"
name => "qa_contact"
value => dontchange
- do_not_change => dontchange
size => 32
%]
<input type="checkbox" id="set_default_qa_contact" name="set_default_qa_contact" value="1">