]> git.ipfire.org Git - thirdparty/bugzilla.git/commitdiff
Fix for bug 179881: makes the "Requests" link in the footer be "My Requests" for...
authormyk%mozilla.org <>
Tue, 19 Nov 2002 12:52:50 +0000 (12:52 +0000)
committermyk%mozilla.org <>
Tue, 19 Nov 2002 12:52:50 +0000 (12:52 +0000)
r=bbaetz
a=myk

request.cgi
template/en/default/global/useful-links.html.tmpl
template/en/default/request/queue.html.tmpl

index 0b6c440adcaf51a275460e57e696db457650a711..c2dbae81eaec2ba20ba43c4008ca05cba6ea5941 100755 (executable)
@@ -117,6 +117,12 @@ sub queue {
       AND       flags.bug_id        = bugs.bug_id
     ";
     
+    # Limit query to pending requests.
+    $query .= " AND flags.status = '?' " unless $::FORM{'status'};
+
+    # The set of criteria by which we filter records to display in the queue.
+    my @criteria = ();
+    
     # A list of columns to exclude from the report because the report conditions
     # limit the data being displayed to exact matches for those columns.
     # In other words, if we are only displaying "pending" , we don't
@@ -126,36 +132,38 @@ sub queue {
     
     # Filter requests by status: "pending", "granted", "denied", "all" 
     # (which means any), or "fulfilled" (which means "granted" or "denied").
-    $::FORM{'status'} ||= "?";
-    if ($::FORM{'status'} eq "+-") {
-        $query .= " AND flags.status IN ('+', '-')";
-    }
-    elsif ($::FORM{'status'} ne "all") {
-        $query .= " AND flags.status = '$::FORM{'status'}'";
-        push(@excluded_columns, 'status');
+    if ($::FORM{'status'}) {
+        if ($::FORM{'status'} eq "+-") {
+            push(@criteria, "flags.status IN ('+', '-')");
+            push(@excluded_columns, 'status') unless $::FORM{'do_union'};
+        }
+        elsif ($::FORM{'status'} ne "all") {
+            push(@criteria, "flags.status = '$::FORM{'status'}'");
+            push(@excluded_columns, 'status') unless $::FORM{'do_union'};
+        }
     }
     
     # Filter results by exact email address of requester or requestee.
     if (defined($::FORM{'requester'}) && $::FORM{'requester'} ne "") {
-        $query .= " AND requesters.login_name = " . SqlQuote($::FORM{'requester'});
-        push(@excluded_columns, 'requester');
+        push(@criteria, "requesters.login_name = " . SqlQuote($::FORM{'requester'}));
+        push(@excluded_columns, 'requester') unless $::FORM{'do_union'};
     }
     if (defined($::FORM{'requestee'}) && $::FORM{'requestee'} ne "") {
-        $query .= " AND requestees.login_name = " . SqlQuote($::FORM{'requestee'});
-        push(@excluded_columns, 'requestee');
+        push(@criteria, "requestees.login_name = " . SqlQuote($::FORM{'requestee'}));
+        push(@excluded_columns, 'requestee') unless $::FORM{'do_union'};
     }
     
     # Filter results by exact product or component.
     if (defined($::FORM{'product'}) && $::FORM{'product'} ne "") {
         my $product_id = get_product_id($::FORM{'product'});
         if ($product_id) {
-            $query .= " AND bugs.product_id = $product_id";
-            push(@excluded_columns, 'product');
+            push(@criteria, "bugs.product_id = $product_id");
+            push(@excluded_columns, 'product') unless $::FORM{'do_union'};
             if (defined($::FORM{'component'}) && $::FORM{'component'} ne "") {
                 my $component_id = get_component_id($product_id, $::FORM{'component'});
                 if ($component_id) {
-                    $query .= " AND bugs.component_id = $component_id";
-                    push(@excluded_columns, 'component');
+                    push(@criteria, "bugs.component_id = $component_id");
+                    push(@excluded_columns, 'component') unless $::FORM{'do_union'};
                 }
                 else { ThrowCodeError("unknown_component", { %::FORM }) }
             }
@@ -177,10 +185,16 @@ sub queue {
         }
         if (!$has_attachment_type) { push(@excluded_columns, 'attachment') }
         
-        $query .= " AND flagtypes.name = " . SqlQuote($::FORM{'type'});
-        push(@excluded_columns, 'type');
+        push(@criteria, "flagtypes.name = " . SqlQuote($::FORM{'type'}));
+        push(@excluded_columns, 'type') unless $::FORM{'do_union'};
     }
     
+    # Add the criteria to the query.  We do an intersection by default 
+    # but do a union if the "do_union" URL parameter (for which there is no UI 
+    # because it's an advanced feature that people won't usually want) is true.
+    my $and_or = $::FORM{'do_union'} ? " OR " : " AND ";
+    $query .= " AND (" . join($and_or, @criteria) . ") " if scalar(@criteria);
+    
     # Group the records by flag ID so we don't get multiple rows of data
     # for each flag.  This is only necessary because of the code that
     # removes flags on bugs the user is unauthorized to access.
@@ -209,6 +223,7 @@ sub queue {
     
     # Pass the query to the template for use when debugging this script.
     $vars->{'query'} = $query;
+    $vars->{'debug'} = $::FORM{'debug'} ? 1 : 0;
     
     SendSQL($query);
     my @requests = ();
index 1f587c66d6b269edfc176546874e91a609ce9084..e069a940077259ab700e9023a0f3e035d1302388 100644 (file)
         
         <a href="report.cgi">Reports</a> 
         
-        | <a href="request.cgi">Requests</a>
-       
+        [% IF user.login %]
+          [% email = user.login FILTER url_quote %]
+          | <a href="request.cgi?requester=[% email %]&requestee=[% email %]&do_union=1&group=type">My Requests</a>
+        [% ELSE %]
+          | <a href="request.cgi">Requests</a>
+        [% END %]
+        
         [% IF user.login && Param('usevotes') %]
           | <a href="votes.cgi?action=show_user">My Votes</a>
         [% END %]      
index a3b1a72745b2857e83b7f5a3c6cabdb120912faa..fcf30ee6d3f0fd78e0271e2ddcf93d9ceffcef78 100644 (file)
 </form>
 [% END %]
 
-[% PROCESS global/header.html.tmpl 
-  title="Request Queue"
-  h2=filter_form
-  style = "
-    table.requests th { text-align: left; }
-    table#filter th { text-align: right; }
-  "
-%]
-
 [% column_headers = { 
       "type"       => "Flag" , 
       "status"     => "Status" , 
 %]
 
 
+[% PROCESS global/header.html.tmpl 
+  title="Request Queue"
+  h2=filter_form
+  style = "
+    table.requests th { text-align: left; }
+    table#filter th { text-align: right; }
+  "
+%]
+
+[% IF debug %]
+  <p>[% query FILTER html %]</p>
+[% END %]
+
 [% IF requests.size == 0 %]
   <p>
     No requests.