[%# 1.0@bugzilla.org %] [%# The contents of this file are subject to the Mozilla Public # License Version 1.1 (the "License"); you may not use this file # except in compliance with the License. You may obtain a copy of # the License at http://www.mozilla.org/MPL/ # # Software distributed under the License is distributed on an "AS # IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or # implied. See the License for the specific language governing # rights and limitations under the License. # # The Original Code is the Bugzilla Bug Tracking System. # # The Initial Developer of the Original Code is Netscape Communications # Corporation. Portions created by Netscape are # Copyright (C) 1998 Netscape Communications Corporation. All # Rights Reserved. # # Contributor(s): Gervase Markham <gerv@gerv.net> #%] [%# INTERFACE: # donames: boolean. True if we have a multi-select for names as well as # categories and subcategories. # category: hash (keyed by category) of hashes (keyed by subcategory) of # hashes (keyed by name), with value being the series_id of the # series. Contains details of all series the user can see. #%] [% subcategory = category.${default.category} %] [% name = subcategory.${default.subcategory} %] <script type="text/javascript"> [%# This structure holds details of the series the user can select from. %] var series = { [% FOREACH c = category.keys.sort %] "[%+ c FILTER js %]" : { [% FOREACH s = category.$c.keys.sort %] "[%+ s FILTER js %]" : { [% IF donames %] [% FOREACH n = category.$c.$s.keys.sort %] "[% n FILTER js %]": [% category.$c.$s.$n FILTER js %][% ", " UNLESS loop.last %] [% END %] [% END %] }[% ", " UNLESS loop.last %] [% END %] }[% ", " UNLESS loop.last %] [% END %] }; [%# Should attempt to preserve selection across invocations @@@ %] [%# This function takes necessary action on selection of a category %] function catSelected() { var cat = document.chartform.category.value; var subcats = series[cat]; var subcatwidget = document.chartform.subcategory; subcatwidget.options.length = 0; var i = 0; for (x in subcats) { subcatwidget.options[i] = new Option(x, x); i++; } [% IF newtext %] subcatwidget.options[i] = new Option("[% newtext FILTER js %]", ""); [% END %] subcatwidget.options[0].selected = true; if (document.chartform.action[1]) { [%# On the query form, select the right radio button. %] document.chartform.action[1].checked = true; } checkNewState(); } [%# This function updates the disabled state of the two "new" textboxes %] function checkNewState() { var fm = document.chartform; if (fm.newcategory) { fm.newcategory.disabled = (fm.category.value != "" || fm.action[1] && fm.action[1].checked == false); fm.newsubcategory.disabled = (fm.subcategory.value != "" || fm.action[1] && fm.action[1].checked == false); } } </script> [%###########################################################################%] [%# Block for SELECT fields - pinched from search/form.html.tmpl #%] [%###########################################################################%] [% BLOCK series_select %] <td align="left"> <select name="[% sel.name %]" id="[% sel.name %]" size="[% sel.size %]" style="width: 15em" [%+ "disabled=\"disabled\"" UNLESS ${sel.name}.keys.size || newtext %] [%+ "onchange=\"$sel.onchange\"" IF sel.onchange %]> [% FOREACH x = ${sel.name}.keys.sort %] <option value="[% x FILTER html %]" [% " selected" IF default.${sel.name} == x %]> [% x FILTER html %]</option> [% END %] [% IF newtext %] <option value="">[% newtext FILTER html %]</option> [% ELSIF NOT ${sel.name}.keys.size %] <option value="" disabled="disabled"></option> [% END %] </select> </td> [% END %]