From 899f61d64550dfd9452972cea600505cc8c7d4e3 Mon Sep 17 00:00:00 2001 From: "bugreport%peshkin.net" <> Date: Wed, 21 Jul 2004 04:46:46 +0000 Subject: Bug 245272: Add per-chart negation to boolean searches r=justdave,myk,timeless a=myk --- Bugzilla/Search.pm | 10 +++++++++- query.cgi | 2 +- template/en/default/search/boolean-charts.html.tmpl | 11 ++++++++++- 3 files changed, 20 insertions(+), 3 deletions(-) diff --git a/Bugzilla/Search.pm b/Bugzilla/Search.pm index 261e1ae0a..bf81451ae 100644 --- a/Bugzilla/Search.pm +++ b/Bugzilla/Search.pm @@ -1049,6 +1049,7 @@ sub init { $chart < 0 || $params->param("field$chart-0-0") ; $chart++) { $chartid = $chart >= 0 ? $chart : ""; + my @chartandlist = (); for ($row = 0 ; $params->param("field$chart-$row-0") ; $row++) { @@ -1111,7 +1112,14 @@ sub init { } if (@orlist) { @orlist = map("($_)", @orlist) if (scalar(@orlist) > 1); - push(@andlist, "(" . join(" OR ", @orlist) . ")"); + push(@chartandlist, "(" . join(" OR ", @orlist) . ")"); + } + } + if (@chartandlist) { + if ($params->param("negate$chart")) { + push(@andlist, "NOT(" . join(" AND ", @chartandlist) . ")"); + } else { + push(@andlist, "(" . join(" AND ", @chartandlist) . ")"); } } } diff --git a/query.cgi b/query.cgi index bd60e5b67..e3c261d59 100755 --- a/query.cgi +++ b/query.cgi @@ -357,7 +357,7 @@ for (my $chart = 0; $::FORM{"field$chart-0-0"}; $chart++) { } push(@rows, \@cols); } - push(@charts, \@rows); + push(@charts, {'rows' => \@rows, 'negate' => $::FORM{"negate$chart"}}); } $default{'charts'} = \@charts; diff --git a/template/en/default/search/boolean-charts.html.tmpl b/template/en/default/search/boolean-charts.html.tmpl index ba88b67b4..6887321f4 100644 --- a/template/en/default/search/boolean-charts.html.tmpl +++ b/template/en/default/search/boolean-charts.html.tmpl @@ -57,7 +57,16 @@ [% FOREACH chart = default.charts %] [% chartnum = loop.count - 1 %] - [% FOREACH row = chart %] + + + + + [% FOREACH row = chart.rows %] [% rownum = loop.count - 1 %] [% FOREACH col = row %] -- cgit v1.2.3-24-g4f1b