| [%# This Source Code Form is subject to the terms of the Mozilla Public |
| # License, v. 2.0. If a copy of the MPL was not distributed with this |
| # file, You can obtain one at http://mozilla.org/MPL/2.0/. |
| # |
| # This Source Code Form is "Incompatible With Secondary Licenses", as |
| # defined by the Mozilla Public License, v. 2.0. |
| #%] |
| |
| [%# INTERFACE: |
| # name: mandatory; field name |
| # id: optional; field id |
| # value: optional; default field value/selection |
| # classes: optional; an array of classes to be added |
| # onchange: optional; onchange attribute value |
| # disabled: optional; if true, the field is disabled |
| # accesskey: optional; accesskey attribute value |
| # add: optional; prepend menu option for value specified to start of select |
| # dontchange: optional; prepend menu option for "dontchange" to start of select |
| # multiple: optional; do multiselect box, value is size (height) of box |
| # title: optional; extra information to display as a tooltip |
| # products: optional; an array of custom product names |
| # isselect: optional; whether the product list should be displayed as a <select> |
| # or as just the plain text of its value. |
| # valueattribute: optional; the product attribute to be used for <option value="">, |
| # defaults to product name |
| #%] |
| |
| [% IF !isselect.defined %] |
| [% isselect = 1 %] |
| [% END %] |
| [% DEFAULT valueattribute = "name" %] |
| [% IF isselect %] |
| <select name="[% name FILTER html %]" |
| [% IF id %] id="[% id FILTER html %]" [% END %] |
| [% IF classes %] class="[% classes.join(' ') FILTER html %]" [% END %] |
| [% IF onchange %] onchange="[% onchange FILTER html %]" [% END %] |
| [% IF disabled %] disabled="[% disabled FILTER html %]" [% END %] |
| [% IF accesskey %] accesskey="[% accesskey FILTER html %]" [% END %] |
| [% IF multiple %] multiple="multiple" size="[% multiple FILTER html %]" [% END %] |
| [% IF title %] title="[% title FILTER html %]" [% END %] |
| > |
| [% IF add %] |
| <option value="">[% add FILTER html %]</option> |
| [% END %] |
| [% IF dontchange %] |
| <option value="[% dontchange FILTER html %]">[% dontchange FILTER html %]</option> |
| [% END %] |
| |
| [% IF Param('useclassification') %] |
| [% classifications = {} %] |
| [% IF products %] |
| [% FOREACH p = products %] |
| [% IF NOT classifications.${p.classification.name}.defined %] |
| [% classifications.${p.classification.name} = [] %] |
| [% END %] |
| [% classifications.${p.classification.name}.push(p) %] |
| [% END %] |
| [% ELSE %] |
| [% FOREACH c = user.get_selectable_classifications %] |
| [% classifications.${c.name} = [] %] |
| [% FOREACH p = user.get_selectable_products(c.id) %] |
| [% classifications.${c.name}.push(p) %] |
| [% END %] |
| [% END %] |
| [% END %] |
| |
| [% FOREACH c = all_classifications %] |
| [% NEXT UNLESS classifications.${c}.size %] |
| <optgroup label="[% c FILTER html %]"> |
| [% FOREACH p = classifications.$c %] |
| <option value="[% p.$valueattribute FILTER html %]" |
| [% " selected" IF (cgi.param(name) == p.name) || (value.contains(p.name)) %]> |
| [% p.name FILTER html %] |
| </option> |
| [% END %] |
| </optgroup> |
| [% END %] |
| [% ELSE %] |
| [% IF NOT products.defined %] |
| [% products = user.get_selectable_products %] |
| [% END %] |
| [% FOREACH p = products %] |
| <option value="[% p.$valueattribute FILTER html %]" |
| [% " selected" IF (cgi.param(name) == p.name) || (value.contains(p.name)) %]> |
| [% p.name FILTER html %] |
| </option> |
| [% END %] |
| [% END %] |
| </select> |
| [% ELSE %] |
| [% value.join(', ') FILTER html %] |
| [% END %] |