]> git.ipfire.org Git - thirdparty/bugzilla.git/commitdiff
Bug 365259: The "Product" select menu in request.cgi doesn't group products by classi...
authorlpsolit%gmail.com <>
Sun, 9 Aug 2009 20:17:44 +0000 (20:17 +0000)
committerlpsolit%gmail.com <>
Sun, 9 Aug 2009 20:17:44 +0000 (20:17 +0000)
request.cgi
template/en/default/request/queue.html.tmpl

index 5dfb76ddb975a26525ad4c5899d173d2dbd66aa5..594ed183366684a9b4142607a56b73953ca8baa8 100755 (executable)
@@ -73,12 +73,11 @@ else {
     my @types = ('all', @$flagtypes);
 
     my $vars = {};
-    $vars->{'products'} = $user->get_selectable_products;
     $vars->{'types'} = \@types;
     $vars->{'requests'} = {};
 
     my %components;
-    foreach my $prod (@{$vars->{'products'}}) {
+    foreach my $prod (@{$user->get_selectable_products}) {
         foreach my $comp (@{$prod->components}) {
             $components{$comp->name} = 1;
         }
@@ -303,14 +302,13 @@ sub queue {
     my $flagtypes = get_flag_types();
     push(@types, @$flagtypes);
 
-    $vars->{'products'} = $user->get_selectable_products;
     $vars->{'excluded_columns'} = \@excluded_columns;
     $vars->{'group_field'} = $form_group;
     $vars->{'requests'} = \@requests;
     $vars->{'types'} = \@types;
 
     my %components;
-    foreach my $prod (@{$vars->{'products'}}) {
+    foreach my $prod (@{$user->get_selectable_products}) {
         foreach my $comp (@{$prod->components}) {
             $components{$comp->name} = 1;
         }
index aa555417cce327ea51856cb9e98792cfdcd38550..4be33ca88a2bc169029ec8c89946454c30664734 100644 (file)
@@ -23,8 +23,6 @@
 [% USE Bugzilla %]
 [% cgi = Bugzilla.cgi %]
 
-[% PROCESS "global/js-products.html.tmpl" %]
-
 [% PROCESS global/header.html.tmpl
   title="Request Queue"
   style = "
   javascript_urls=["js/productform.js"]
 %]
 
+<script type="text/javascript">
+  var useclassification = false; // No classification level in use
+  var first_load = true; // Is this the first time we load the page?
+  var last_sel = []; // Caches last selection
+  var cpts = new Array();
+  [% n = 1 %]
+  [% IF Param('useclassification') %]
+    [% FOREACH clas = user.get_selectable_classifications %]
+      [% FOREACH prod = user.get_selectable_products(clas.id) %]
+        [%+ PROCESS js_comp %]
+      [% END %]
+    [% END %]
+  [% ELSE %]
+    [% FOREACH prod = user.get_selectable_products %]
+      [%+ PROCESS js_comp %]
+    [% END %]
+  [% END %]
+</script>
+
+[% BLOCK js_comp %]
+  cpts['[% n %]'] = [
+    [%- FOREACH comp = prod.components %]'[% comp.name FILTER js %]'[% ", " UNLESS loop.last %] [%- END -%]];
+  [% n = n+1 %]
+[% END %]
+
 <p>
 When you are logged in, only requests made by you or addressed to you
 are shown by default.  You can change the criteria using the form below.
@@ -54,10 +77,24 @@ to some group are shown by default.
       <td>
         <select name="product" onchange="selectProduct(this, this.form.component, null, null, 'Any');">
           <option value="">Any</option>
-          [% FOREACH prod = products %]
-            <option value="[% prod.name FILTER html %]"
-                    [% "selected" IF cgi.param('product') == prod.name %]>
-              [% prod.name FILTER html %]</option>
+          [% IF Param('useclassification') %]
+            [% FOREACH c = user.get_selectable_classifications %]
+              <optgroup label="[% c.name FILTER html %]">
+                [% FOREACH p = user.get_selectable_products(c.id) %]
+                  <option value="[% p.name FILTER html %]"
+                    [% " selected" IF cgi.param('product') == p.name %]>
+                    [% p.name FILTER html %]
+                  </option>
+                [% END %]
+              </optgroup>
+            [% END %]
+          [% ELSE %]
+            [% FOREACH p = user.get_selectable_products %]
+              <option value="[% p.name FILTER html %]"
+                [% " selected" IF cgi.param('product') == p.name %]>
+                [% p.name FILTER html %]
+              </option>
+            [% END %]
           [% END %]
         </select>
       </td>